如何从175(175-253)到2的补码方法减去253?

时间:2016-03-18 09:40:46

标签: algorithm scientific-computing computation computer-algebra-systems

对于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

有人告诉我这里有什么问题吗?

1 个答案:

答案 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.