向右移位是不是都除以2
追答比如 00001100(就是 12),右移两位,就变成了 00000011(3),相当于 12 ÷ 2 ÷ 2。
如果是负数,负数右移符号位不变,比如 10001100(-12),右移两位则变成了 10000011,(-3),相当于 -12 ÷ 2 ÷ 2。
上面只是比较浅显地从数值原生的二进制表示(原码)角度的讲解,如果想深入了解,可以查看关于原码、反码和补码的知识,以及数值在计算机中的存储方式。
那31呢,向右也是除以2,就不对了吧
追答31就是 0011111,向右移一位就是 00001111,就成了 15。31÷2=15.5,但是我们是要保存在 byte 里的,所去将小数位去掉,留下就是15。
追问要是int?
追答int 也是整数,int a = 31 / 2,那么 a = 15.
float 和 double 则是用来保存小数的.
默认是负的?