4

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

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

4

1 回答 1

4

使用 8 位,您只能表示 2 的补码中从 -128 到 127 的数字。你的两个数字都在这个范围之外。您将需要至少九位来进行您想做的计算。

在 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。

于 2016-03-18T10:01:39.170 回答