byte 是 java 八大基本类型之一,有符号 8 位存储, 它的存储范围是:
// 最小值 -2^7 (-128)
// 补码:1000 0000
// 最大值 2^7 - 1 (127)
// 补码:0111 1111
因为最高位还要留给符号位。
是 -128。这里有一个重要的概念,就是 (byte)128 表达式中的 128 是 32 位 int 类型。 那么他在内存中的表达形式
// 128
00000000 00000000 00000000 10000000 // 正数源码、反码、补码都一样
此时把它转成 byte 类型,byte 只有 8 位,也就是它只能存储低 8 位
// 128
10000000 // 注意,这是补码
注意它的符号位此时是 1,所以它是 -128。这也是 byte 类型所能表示的最小值。
32 位 129 的内存存储是
// 129
00000000 00000000 00000000 10000001 // 正数源码、反码、补码都一样
转成 8 位 byte 类型
// 129
10000001 // 注意,这是补码
10000001 的源码是 11111111,就是 -127。
依次类推:
(byte)255 == -1 // true
Wechat: porco5555
Gmail: zhangporco@gmail.com