我知道如果最高位有进位,r-base数的r-1补码应该以进位结束。
但我无法弄清楚为什么要这样做。
我只能想到它可能是关于零的两个表示的原因。
例如:
1 1 1 0 (-1)
0 1 0 1 (+5)
===============
10 0 1 1 =====>(0 1 0 0)
I just can explain it from the result that because its sum is positive, and 1's complement has two representations, so it should add one.
例如:
1 1 1 0 (-1)
1 0 1 0 (-5)
===============
11 0 1 1 =====>(1 0 0 1)
And I cannot explain it why should add one.
结束携带的真正原因是什么?
感谢您阅读。
答案 0 :(得分:5)
端到端进位实际上相当简单:它将加法运算的模数从r n 改变为r n -1,如果你认为数字为无符号。为简化起见,我们来谈谈二进制文件。
让我们使用四位二进制补码算法计算(-2)+( - 4):
1 1 1 0 (-2) + 1 1 0 0 + (-4) --------- ------ 1 1 0 1 0 (-6)
让我们将进位保持在原来的位置。如果你把数字看成无符号整数,我们计算14 + 12 = 26.但是,加法是以16为模,所以我们得到10,这是无符号数,代表-6(正确的结果)。
在补码中,数字有不同的表示形式:
1 1 0 1 (-2) + 1 0 1 1 + (-4) --------- ------ 1 1 0 0 0 (-6)
再次,让我们将进位保持在原位。如果你把数字看作无符号整数,我们计算13 + 11 = 24.然而,由于环绕进位,加法以模15进行,所以我们得到9,表示-6(正确)结果)。
因此,在四位二进制补码中,-2相当于14模16,-4相当于12模16,-6相当于10模16。
在四位补码中,-2相当于13模15,-4相当于11模15,-6相当于9模15。
有符号零:你得到“有符号零”的原因是因为在4位中有16个可能的数字,但是如果你在进行模15运算,那么0和15是等价的。这就是它的全部内容。