【发布时间】:2015-02-19 02:51:39
【问题描述】:
要么对下面写的内容有些混淆,要么我的教科书有误。 我在教科书中查看使用 2 的补码添加 8 位有符号二进制数字的示例,并遇到了这些示例。 我们需要查找是否发生溢出
示例 1]
添加 +75 和 -58p>
+75 = 01001011 ... (a)
+58 = 00111010
-58 = 11000110 ... (b) [取 +58 的 2 的补码]
现在添加 (a) 和 (b) 我们得到
01001011
+ 11000110
1]00010001
教科书中写到溢出发生时,箭头指向那个额外的 1,用方括号分隔。 这个例子没问题,从这里我了解到,如果有额外的 1,那么我们就会溢出。
(问题 1:我的理解是否正确?)
例子2:这个例子让我很困惑
添加 53 和 (-13)
53 = 00110101
-(13) = 11110011
现在添加两个我们得到
00110101 + 11110011 = 1]00101000
然后他们写道:有符号位的进位和进位是1。所以没有溢出。丢弃进位和休息是积极的要求结果
(主要问题:即使有这个溢出数字(额外1)为什么他们说它没有溢出。对于上面句子中写的有符号位,这些进位和执行是什么。)
我做了很多谷歌搜索,但找不到一个很好的合理解决方案来解决他们所说的这句话,或者可能是在我眼前但我不明白。有人请澄清。我看到的大多数示例(在堆栈溢出和其他站点上)都是 4 位,这让我更加困惑。有人请帮我澄清一下,谢谢。
【问题讨论】:
-
这可能有助于澄清? stackoverflow.com/a/21965234/314291
-
谢谢,这确实部分解决了我的疑问:)(感谢你的回答,现在我知道可以忽略额外的 1 ..),现在这些进位和执行位是什么他们指定教科书里的就是我剩下的了..
标签: binary overflow addition signed twos-complement