这部分代码应返回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);
答案 0 :(得分:5)
因为Java中只有 signed 整数类型。 8位10000000 2 字节的第一位是1 signifies negative number。因此,Java中byte
类型的范围是< -128; 127取代。看看这个:
byte b = 127;
byte b2 = (byte)(b + 1); //-128
答案 1 :(得分:3)
Java仅支持签名short/byte/integer/long。
byte:字节数据类型是8位有符号二进制补码整数。它的最小值为-128,最大值为127(含)。字节数据类型可用于在大型阵列中保存内存,其中节省的内存实际上很重要。它们也可用于代替int,其限制有助于澄清您的代码;变量范围有限的事实可以作为一种文档形式