Java:为什么不能代表+128?

4 java bitset

这部分代码应该返回LittleEndian中10000000的表示,然后返回128,但它返回-128.我知道128与二进制表示中的-128相同,但为什么不能代表128?

BitSet bset = new BitSet();
bset.set(7);
byte[] bitarray = bset.toByteArray();
for (byte b: bitarray)
 System.out.println(b);
Run Code Online (Sandbox Code Playgroud)

Tom*_*icz 5

因为Java 中只有有符号整数类型.8位10000000 2字节的第一位是1,表示负数.因此byte,Java中的类型范围是<-128; 127>.看一下这个:

byte b = 127;
byte b2 = (byte)(b + 1);  //-128
Run Code Online (Sandbox Code Playgroud)