为了获得负数的二进制表示,您需要计算二进制补码:
- 获取正数的二进制表示
- 反转所有位
- 加一
让我们以-72为例:
0100 1000 721011 0111 All bits inverted1011 1000 Add one
因此,-72的二进制(8位)表示形式是
10111000。
实际发生的事情如下:您的文件有一个带value的字节
10111000。当解释为无符号字节(可能是您想要的)时,它是88。
在Java中,当将此字节用作int时(例如,由于
read()返回int或由于隐式提升),它将被解释为带符号的字节,并将其符号扩展为
1111111111111111 11111111 10111000。这是一个值为-72的整数。
通过与
0xff运算,您将只保留最低的8位,因此您的整数现在
00000000 00000000 00000000 10111000为88。



