Math 8位无符号数字加减溢出
我很难理解无符号加法和减法何时发生溢出。 比如说,Math 8位无符号数字加减溢出,math,bit-manipulation,unsigned,Math,Bit Manipulation,Unsigned,我很难理解无符号加法和减法何时发生溢出。 比如说, 1 1 1 1 0 0 0 0 + 0 0 1 1 1 0 0 0 __________________ 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 1 - 0 0 0 0 0 0 1 1 由于MSB中的1,因此会导致溢出。 我理解这个问题,但当涉及到减法时,我很难确定它何时溢出 比如说, 1 1 1 1 0 0 0 0 + 0 0 1 1 1 0
1 1 1 1 0 0 0 0
+ 0 0 1 1 1 0 0 0
__________________
0 0 1 0 1 0 0 0
0 0 0 0 0 0 0 1
- 0 0 0 0 0 0 1 1
由于MSB中的1,因此会导致溢出。
我理解这个问题,但当涉及到减法时,我很难确定它何时溢出
比如说,
1 1 1 1 0 0 0 0
+ 0 0 1 1 1 0 0 0
__________________
0 0 1 0 1 0 0 0
0 0 0 0 0 0 0 1
- 0 0 0 0 0 0 1 1
(应用2的补码后)
因此,结果应该是“无溢出”,因为最终没有执行1。然而,答案是“溢出”。你能告诉我为什么吗?我可能会称之为下溢而不是上溢
这样想吧。您正在尝试计算x− Y使用二的补码,您将把它实现为x+(2N)− y) =2N+(x− y) 。因此,结果只能正确表示(x− y) 如果有溢出进位2N从左侧脱落。否则,您得到的结果是负减法结果的两个s补码表示。我认为应该在-