4

我知道如果最高位有进位,r 基数的 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.

结束随身携带的真正原因是什么?

谢谢你阅读它。

4

1 回答 1

11

结束进位实际上相当简单:如果您认为数字是无符号的,它会将加法运算的模数从 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。

有符号零:你得到“有符号零”的原因是因为四位有 16 个可能的数字,但如果你正在做模 15 算术,那么 0 和 15 是等价的。这里的所有都是它的。

于 2012-10-18T11:06:00.207 回答