添加两个负二的补码

时间:2013-01-30 03:51:34

标签: binary

所以,让我们说我想用2s补码二进制表示法将-7和-7加在一起。我试过这个:

-7 -> -00000111 -> 11111001
  1 1 1 1 1 0 0 1
+ 1 1 1 1 1 0 0 1
__________________
1 0 0 0 0 0 0 1 0

但删除额外的数字后,我得到00000010 = 2而不是11110001 = 14.我做错了什么?

2 个答案:

答案 0 :(得分:4)

在某个地方,你丢失了(并且不断丢失)进位旗:

          +- Here, 1 + 1 = 0 and sets carry to 1
          |   (everything up to here isokay).
          v
  1 1 1 1 1 0 0 1
+ 1 1 1 1 1 0 0 1
__________________
1 1 1 1 1 0 0 1 0
| | | ^ ^
| | | | |
| | | | +- Here, 1 + 1 + carry(1) is 1, not 0.
| | | +--- Ditto.
| | +----- And again.
| +------- Now it's just getting tedious.
+--------- Lastly, here is the final carry, just discard.

否定11110010(反转位并加1)会得到00001110,这肯定是14(8 + 4 + 2)。

答案 1 :(得分:1)

你的数学错了。在位置5添加1 + 1给你10,所以进行1.在下一列你需要加1 + 1 +进位,= 11 = 1 +进位。

当你考虑到这一点时,最终会得到1 1 1 1 0 0 1 0 = -14。