【发布时间】:2015-04-07 06:53:37
【问题描述】:
女士们,先生们,我已经成功地理解了无符号二进制数的加法等。但是,这个二的补码让我打败了。让我用一些例子来解释一下。
示例练习题,使用8位有符号整数存储系统执行每个算术,在二进制补码下:
1111111
01100001
+ 00111111
----------
10100000 <== My Answer (idk if right / wrong), but i think right.
所以它不超过 8 位,但是我们改变了(正 + 正)= 负。那一定是溢出,因为标志在变化,对吧? (我一直不明白 MSB 中的进位和执行 MSB 是什么)。
对我来说真正棘手的部分是以下等式:(负 + 负)实际上等于(负 - 正)。
111111
10111111
+ 10010101
----------
1 | 01010100
所以我认为这应该是错误的,因为当我们丢弃溢出位(左侧字段中的 1)时,它会将 8 位表示变为正数,而它应该是负数。所以这会导致溢出,不是吗?
以下等式类似:
1111
10001110
+ 10110101
----------
1 | 01000011
可以理解,如果我们使用 16 位等,那么这些不会溢出,因为符号没有改变,所以数学是正确的。但是因为当我们存储这些数字的 8 位表示时,我们会丢失 MSB,这会翻转符号。
但我注意到我的理论的一件事是,每当添加两个负数时,MSB 显然总是为 1,因此你总是会有一个进位,这意味着你总是会有一个溢出。
** 我认为更合乎逻辑的结论是,我忘记在添加第二个否定词之前将它们转换为肯定词或其他东西,或者类似的东西。但我已经尝试过 youtube 和各种在线研究。 TBH,我的教授在整个“沟通”方面都很糟糕。我会很感激社区可以提供的任何帮助,所以我可以克服这些问题并解决更难的材料 XD。
【问题讨论】:
标签: math binary twos-complement