【问题标题】:8 bit unsigned number addition and subtraction overflow8位无符号数加减溢出
【发布时间】:2019-02-27 04:32:21
【问题描述】:

我无法理解在未分割的加法和减法中何时发生溢出。 例如,

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

【问题讨论】:

标签: math bit-manipulation unsigned


【解决方案1】:

我可能会称之为 underflow 而不是 overflow

这样想。您正在尝试计算 x - y。使用二进制补码,您将其实现为 x + (2N - y) = 2N + (x - y)。因此,只有在存在溢出进位位 2N 时,结果才会正确表示 (x - y)从左边掉下来。否则你得到的结果是负减结果的二进制补码表示。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-09-22
    • 2012-02-29
    • 2012-10-28
    • 2015-09-06
    • 1970-01-01
    • 2013-04-10
    • 2011-01-04
    相关资源
    最近更新 更多