1个字节占8位。1位表示1个0或者1.1个字节表示的无符号数从0-2^8-1(255),一共256个数。
下面是一个有意思的实验:
在计算器中,十进制写入-1
然后选择二进制,发现变成了11111111(后面选择字节)
然后再选择十六进制,发现变成了FF
然后再选择十进制,变成了255.
当初我们的十进制数是-1,现在经过一系列的变换,反而成了255.
所有的数值在计算机中都以补码的形式存在。正数的补码=反码=原码。负数的补码=原码(除符号位外)按位取反+1
有符号整数 二进制原码 二进制补码 十六进制 无符号十进制 如何变成负数
-1 10000001 11111111 FF 255 255-2^8=-1
-2 10000010 11111110 FE 254 254-2^8=-2
-3 10000011 11111101 FD 253 253-2^8=-3
(-1)+(-2)=-3
二进制补码表示:
如果自己写代码计算从下位机得到的补码的话,先把补码换算成无符号的十进制数(假设占1个字节,根据实际情况来计算)。然后该数-2^8即可。