微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用 2 的补码计算 8 位数字的加法

如何解决使用 2 的补码计算 8 位数字的加法

对于下面的加法运算,找出计算机使用 8 位 2 的补码给出的结果:

-93 + -35

45 + 114

我的回答:

一个问题: 128=10000000的二进制表示

-128(2 的 128 的恭维)= 10000000

第二个问题:

2 的补码中的 45 = 00101101

114 in 2 的赞美=01101000

45+114 = 10010101

我说得对吗?如果没有,有人可以告诉我如何为两者实现正确的解决方案吗?

解决方法

这看起来像是家庭作业,所以我不会给你答案,但我可以帮你找到答案。请填写所有空格,并回答穿插问题。

二进制中的 45 是________[1]
二进制中的 114 是 ________[2]

这些都可以用 8 位表示。但是当它们用 8 位表示时,如果解释为 2 的补码,它们会被解释为负数还是正数? (我的猜测是它们应该是正数,因为它们都小于 127,这是可以表示为 8 位 2 的补码的最大数。)

现在做 [1] + [2] 的二元加法,得到结果 ________[3]

现在,当 [3] 用 8 位表示时,如果解释为 2 的补码,它会被解释为负数还是正数? (如果我用十进制计算,我注意到 45 + 107 是 159,它大于 127,所以我猜这里会有一个“问题”。)

最后,解释为 2 的补码的 [3] 的实际值是多少?在这里填写:___[4]

[4] 等于 159 吗?如果没有,为什么不呢?

如果取[4],去掉减号,转换为正数(即取绝对值),再加上(作为普通数)到159,你会得到什么?这个数字是不是很眼熟?


现在,到另一个问题。

找出-93的8位2的补码表示:________[5]
找出-35的8位2的补码表示:________[6]

作为一个附带问题,只是为了好玩,将 [5] 解释为一个普通的(不是 2 的补码)8 位二进制数。 (因此它将是一个正数。)答案:___[7]

对 [6] 执行相同的操作。答案:___[8]

计算(使用普通算术)[7] + 93。这个数字是不是很眼熟?

计算(使用普通算术)[8] + 35。这个数字是不是很眼熟?

现在将 [7] 和 [8] 以二进制形式相加:_________[9]。结果有多少位?超过 8 个了吗?

如果超过8位,扔掉最高位,留下8位:________[10]

将[10]解释为一个普通的二进制数,它是什么? ___[11]

将 [10] 解释为 2 的补数,它是什么? ___[12](这有点棘手,小心。)

最后,如果用普通算术做题,-93 加-35 是否等于 [12]?


如果您仍然感到迷茫,请考虑以下几个不同的示例。让我们看看数字 37。

二进制中的 37 是 00100101
00100101 的二进制补码为 11011011
所以 -37 在二进制补码中是 11011011

另外,作为一种双重检查,请注意,如果我们将 11011011 作为普通二进制数,它是 219。然后注意 256 - 37 = 219。

现在,让我们做一个简单的加法问题。我将在三列中展示它:(A)、(B)和(C)。列 (B) 是二进制的。列 (A) 是列 (B) 中的二进制数,解释为 2 的补码。 (C) 列是 (B) 列中的二进制数,解释为普通数(不是 2 的补码)。

此外,8 位和溢出,因此有两种不同的“底线”:完整的 9 位和,以及丢弃第 9 位或进位后的和。

   (A)         (B)        (C)
    50       00110010      50
+  -37    +  11011011   + 219
   ---      ---------     ---
  (n/a)     100001101     269
    13       00001101      13

还有一点:注意 269 - 13 = 256。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。