我无法理解未加减运算中何时发生溢出。 例如,
1 1 1 1 0 0 0 0
+ 0 0 1 1 1 0 0 0
__________________
0 0 1 0 1 0 0 0
由于MSB中为1,因此导致溢出。 我知道这个问题,但是当要减法时,我很难确定它何时溢出
例如,
0 0 0 0 0 0 0 1
- 0 0 0 0 0 0 1 1
(应用2的补码后)
0 0 0 0 0 0 0 1
+ 1 1 1 1 1 1 0 1
1 1 1 1 1 1 1 0
因此,结果应为“无溢出”,因为最后没有1执行。但是,答案为“溢出”。你能告诉我为什么吗?
答案 0 :(得分:0)
我可能将其称为下溢而不是上溢。
这样想吧。您正在尝试计算 x - y 。使用二进制补码将其实现为 x +(2 N - y )= 2 < em> N +( x - y )。因此,如果出现溢出进位位2 N ,则结果将仅正确表示( x - y )从左边掉下来。否则,您得到的结果是负减法结果的二补数表示。