对于 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
有人告诉我这里出了什么问题吗?
对于 8 位,您只能在 2 的补码中表示从 -128 到 127 的数字(包括 2)。您的两个数字都超出了该范围。您至少需要九位才能执行所需的计算。
在 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。