如果我有
0010 1101
0110 1111
的 的 ____ +
1001 1100
是否溢出?因为第一个数字的符号变为1而1代表负数?我在二元方面很弱。
如果添加
怎么办?1111 1111
1111 1111
的 的 ___ +
1111 1110
进纸1不是溢出?因为1111 1110代表-2?
感谢您的帮助!
答案 0 :(得分:0)
这取决于您对待价值的方式 - 是签名还是未签名。如果是无符号二进制,则不是溢出。如果它是签名的,则确实发生了溢出。
我想我们正在讨论有符号值,而不是基本上,溢出是当值由于二进制算术运算而改变其符号时,结果超出了max-min范围。
答案 1 :(得分:0)
如果您使用的是没有符号的普通二进制表示,则它不是溢出
0010 1101->45
0110 1111->111
45 + 111 = 156.您可以在[0,255]范围内操作,然后它不会溢出。
如果您使用的是二进制补码,则范围从-128到127,只有一个表示为0.然后它是溢出,因为156超出范围[-128,127]
您不能只使用第一位来表示符号,因为您有10000000和00000000表示0和-0。您应该使用两个补码来操作负数。