一般我们计算字节补码都是按取反+1来算,介绍一种简便法。
10进制:
5-3=2 5+(10-3)= 1 2 // -3的补码是(10-3)=7
7-4=3 7+(10-4)= 13 // -4的补码是(10-4)=6
8-4=4 8+(10-4)= 14
为了把减法运算转成加法运算,负数需转成补码形式,这样相加去掉进位结果和相减一样;
16进制:
0x05-0x03=0x02 5+(256-3)= 258=0x01 02
0x07-0x04=0x03 7+(256-4)= 259=0x01 03
0x31-0x12=0x1f 0x31+(0x0100-0x12)= 0x01 1f
所以:
-1补码:256-1=255=0xff
-2补码:256-2=254=0xfe
1+(-1)=0 即1+255=256=0x0100 //去掉字节进位
-1+(-1)= -2即255+255=510=0x01fe