对于2的补充,通过计算机进行减法处理。
176-253 = 176 +( - 253)
176 = 10110000
253 = 11111101
253(逆)= 00000010
253(补体)= 00000010 + 1 = 00000011
-253 = 253(补体)= 00000011
176 +( - 253)= 10110000 00000011 + 10110011 = 179 =
但事实上176-253 = -77
有人告诉我这里有什么问题吗?
答案 0 :(得分:4)
对于8位,您只能表示从2到12的补码中的-128到127的数字。你的数字都在这个范围之外。您至少需要9位来进行您想要的计算。
在2的补码中,最高有效位(MSB,左起第一位)表示符号,1表示负数,0表示非负数。价值:
00000011
不是-253,而是3。
以9位进行计算得出:
176 = 010110000
253 = 011111101
253(inverse) = 100000010
253(complement) = 100000010+1=100000011
-253 = 253(complement) = 100000011
176+(-253) = 010110000 + 100000011 = 110110011 = -77
请注意,所有负数都有MSB = 1,所有非负数都有MSB = 0.