如何处理二进制表示中的二进制补码溢出

时间:2017-02-27 05:53:35

标签: assembly binary boolean-logic twos-complement

enter image description here在此链接中,我正在查看CMU的计算机科学评论材料。

x = 30
y = -29

我们如何处理二进制加法的溢出? 我以为我明白了,但是当我加上两个时,这就是我得到的。到30岁。

Two's Complement 30 representation:

0001 1100 x = 30

x+2 = 32

  0001 1110 
+ 0000 0010
------------
  0010 0000

这不等于32,是正面吗? 答案键说x + 2 = -32,虽然它表明存在溢出,但我不知道在哪里可以使逻辑跳跃/假设它将是负数。

请向我解释这个推理来自哪里/哪里出错了。谢谢!

编辑:图片似乎已从Link消失。

1 个答案:

答案 0 :(得分:0)

您对双方赞美的理解似乎是正确的。假设8位,30 + 2应该是32,因为你说。但是,如果我们假设6位,我们得到表格提供的答案。

  01 1110
+ 00 0010
---------
= 10 0000

由于前导位与两个操作数不同(我们正在执行两个正数的加法),因此发生了溢出,答案是-32。