我知道如果最高位有进位,则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.
Run Code Online (Sandbox Code Playgroud)
例如:
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.
Run Code Online (Sandbox Code Playgroud)
结束携带的真正原因是什么?
感谢你阅读它.
端到端进位实际上相当简单:如果你认为数字是无符号的,它会将加法运算的模数从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是等价的.这里的所有都是它的.