繁体   English   中英

为什么 8 位有符号整数 0xA3 + 0xF9 相加不会产生溢出,但有符号整数 0x9F + 0xA3 相加会产生溢出?

[英]Why does the addition of 8-bit signed integers 0xA3 + 0xF9 NOT produce overflow, but the addition of signed integers 0x9F + 0xA3 does?

我在标题中给出了这些整数的十六进制值,只是为了节省空间,但我实际上是在尝试将它们添加到二进制中。

有符号二进制加法的溢出条件(据我所知)如下:

假设我们有 2 个 8 位有符号整数 x 和 y。

如果我们将 x 和 y 相加,并且它们都是正数,但结果为负数,则存在溢出。

同样,如果我们将 x 和 y 相加,并且它们都是负数,但结果是正数,则存在溢出。

最后,如果 Most Significant Bit Carry-In 值不等于 MSB Carry-Out 值,则存在溢出(我认为这是我最难理解的情况,但在你之后会更清楚'已经查看了我解决这两个问题的方式)

现在为了实际添加,我附上了我的工作:

两个问题的计算。

首先,我是否正确地进行了签名添加? 如果是这样,那么如果我只是要添加这些有符号整数而不使用它,那么 2 的补码又有什么意义呢?

其次,在第一个问题和第二个问题中,有一个额外的第 9 位,但是溢出只发生在第二个问题中。 是什么赋予了?

我以为我理解了有符号二进制的概念,但是现在我实际上是在用 8 位二进制数执行计算,我遇到了很多困惑,尤其是在混合溢出的情况下。 如果您需要任何澄清或我违反任何规则,请告诉我,以便我可以相应地编辑我的帖子。

先感谢您。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM