假设我有21 - 10 =十进制10。
签名方法:
10101
- 1010
-----
1011 = 11 (in decimal)
到目前为止一切顺利,
现在如果我决定使用两个补码
(0)
10101 (21)
+ 10110 (-10)
-----
(1) 01011 = (11)
这里显示我有一个零进位并执行一个。如果我遵循下溢和溢出的规则,这应该被视为下溢,并且最终不应该得到正确的答案。
但是,如果我决定再添加一个位来使用:
(1)
010101 (21)
+ 110110 (-10)
-----
(1) 001011 = (11)
在这种情况下,我得到正确的答案,没有溢出。
我似乎无法弄清楚这里发生了什么,为什么我会以两个补码的形式得到每个案例的正确答案。
任何澄清都会有所帮助!
答案 0 :(得分:2)
在5位中,10101 不 21!
设置了最重要的位,因此它是一些负数!
答案 1 :(得分:2)
只有5位,10101是-11的表示。你得到了“正确”的答案,因为你实际计算的是-11 + -10并得到11,这是不正确的答案,与上下溢规则一致。