0

如果我有

0010 1101

0110 1111

____ +

1001 1100

是否溢出?因为第一个数字的符号变成1,1代表负数?我的二进制很弱。

如果添加怎么办

1111 1111

1111 1111

___ +

1111 1110

结转 1 不是溢出?因为1111 1110代表-2?

感谢您的帮助!

4

2 回答 2

0

如果您使用的是没有符号的普通二进制表示,则它不是溢出

0010 1101->45
0110 1111->111

45+111 = 156。你可以在 [0, 255] 范围内操作,那么它不是溢出。

如果您使用二进制补码,则范围为 -128 到 127,只有一种表示 0。然后这是溢出,因为 156 超出范围 [-128, 127]

您不能只使用第一位来表示符号,因为这样您就有 10000000 和 00000000 代表 0 和 -0。您应该使用二进制补码来处理负数。

于 2013-10-22T08:58:08.423 回答
0

这取决于你如何对待你的价值——它是签名的还是未签名的。如果它是无符号二进制,则不会溢出。如果签名为 1,则确实发生了溢出。

我想我们谈论的是有符号值,基本上,溢出是当值由于二进制算术运算而改变其符号时,结果超出了最大-最小范围。

于 2013-10-22T08:32:05.497 回答