如何处理二进制表示中的补码溢出
How to handle Two's complement Overflow in Binary representation
在这个link,我在看CMU的Computer Science复习资料
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,虽然它表示有溢出,但我不确定我可以在 logic/assume 中跳到哪里,它会是负数。
请向我解释这个推理是从哪里来的from/where我错了。谢谢!
编辑:图片似乎从 Link 消失了。
你对二人称赞的理解似乎是正确的。假设 8 位,30 + 2 应该是你所说的 32。但是,如果我们假设 6 位,我们将得到 table 提供的答案。
01 1110
+ 00 0010
---------
= 10 0000
由于前导位与两个操作数不同(并且我们正在执行两个正数的加法),因此发生溢出并且答案是-32。
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,虽然它表示有溢出,但我不确定我可以在 logic/assume 中跳到哪里,它会是负数。
请向我解释这个推理是从哪里来的from/where我错了。谢谢!
编辑:图片似乎从 Link 消失了。
你对二人称赞的理解似乎是正确的。假设 8 位,30 + 2 应该是你所说的 32。但是,如果我们假设 6 位,我们将得到 table 提供的答案。
01 1110
+ 00 0010
---------
= 10 0000
由于前导位与两个操作数不同(并且我们正在执行两个正数的加法),因此发生溢出并且答案是-32。