8位无符号数加减溢出

时间:2018-09-23 12:38:48

标签: 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 

由于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执行。但是,答案为“溢出”。你能告诉我为什么吗?

1 个答案:

答案 0 :(得分:0)

我可能将其称为下溢而不是上溢

这样想吧。您正在尝试计算 x - y 。使用二进制补码将其实现为 x +(2 N - y )= 2 < em> N +( x - y )。因此,如果出现溢出进位位2 N ,则结果将仅正确表示( x - y )从左边掉下来。否则,您得到的结果是负减法结果的二补数表示。