在计算机里,数据是以补码的形式存放和计算的。
正数的补码直接等于它的原码,负数的补码=它的符号位以外的数值按位取反后再加1,同时符号位取1.
以8bit位宽为例子。
55-74= (55的补码) + (-74的补码)
55的补码 = 00110111
-74的补码
=(最高bit为1,因为是负数) 且 (低7bit为 (1001010按位取反 + 1)
= (最高bit为1,因为是负数) 且 (低7bit为 (0110110)
= 1_0110110
= 10110110
所以,(55的补码) + (-74的补码)
= 00110111 + 10110110
= 11101101
而补码11101101表示的数,正好是有符号的十进制数的-19