java中byte的范围为何是-128--127而不是-127--127?
2017-08-09 16:07
337 查看
我来试着解释一下~ 一个byte由八个位组成,如00000000,其中,前7位表示数值,第8位是符号位(0为正,1为负)。这样+1就是00000001,-1就是10000001。最大的正数就是0 1111111,即2^0+2^1+……+2^6=127;最小的负数,同理,为1 1111111,即-127。 到这里应该是许多人不明白的地方,为什么负数会到-128。这不得不崇拜伟大的印度阿三们。 上述的描述会出现一个问题,就是0,会出现一个+0和一个-0。印度人他们规定-0为-128,这样就与计算机的补码(程序都是按补码运行的)完美的结合在一起。
0x00 = 0 0x01 = 1 ... 0x7f = 127 0x80 = -128 = -(128 - 0x00) = -(128 - (0x80 & 0x7f)) 0x81 = -127 = -(128 - 0x01) = -(128 - (0x81 & 0x7f)) 0x82 = -126 = -(128 - 0x02) = -(128 - (0x82 & 0x7f)) ... 0xff = -1 = -(128 - 0x7f) = -(128 - (0xff & 0x7f))
相关文章推荐
- java byte为何范围是-128~127
- Java 中的真值、机器数、原码、反码和补码:为什么整形的取值范围 不是对称的,比如 byte的取值范围为 -128到127,而不是-128到128或者-127到127?
- 为什么java中Byte类型的取值范围是-128~127
- byte为何范围是-128~127
- java中为什么byte的取值范围是-128到+127
- 为什么Java byte 类型的取值范围是-128~127
- 为什么Java byte 类型的取值范围是-128~127
- 为什么Java byte 类型的取值范围是-128~127
- 为什么Java byte 类型的取值范围是-128~127
- byte的范围为何是-128到127
- Java byte 类型的取值范围是-128~127
- 为什么JavaByte类型的取值范围是-128~127
- 为什么Java byte 类型的取值范围是-128~127
- 为什么Java中byte类型的取值范围是-128~127
- 为什么Java byte 类型的取值范围是-128~127
- 为什么Java byte 类型的取值范围是-128~127
- 为什么Java byte 类型的取值范围是-128~127
- 为什么Java byte 类型的取值范围是-128~127
- 为何八位有符号整数的范围是-128~127,而不是-127~128
- 为什么Java byte 类型的取值范围是-128~127