对于 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
有人告诉我这里有什么问题吗?
对于 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 的补码中,最高有效位(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。