Java的byte类型取值范围是-128~127为什么负数是128正数到127呢
概念:java中用补码表示二进制数,补码的最高位是符号位,最高位为“0”表示正数,最高位为“1”表示负数。
在了解byte取值范围之前,我们需要先了解原码、反码、补码
- 正数的原码、反码、补码是一样的 (都是其本身)
- 负数的反码是对其原码 逐位取反,但符号位除外 ;即(符号位不变,其余位取反即1变成0,0变成1 )
- 负数的补码是在其反码的末位加1。
栗子:
+21,其二进制表示形式是00010101,则其补码同样为00010101
-21,按照概念其绝对值为00010101,各位取反为11101010,再加1为11101011,即-