这看起来像家庭作业,所以我不会给你答案,但我可以帮你找到答案。请填空,并回答穿插的问题。
二进制中的 45 是 ________[1]
二进制的 114 是 ________[2]
这些都可以用 8 位表示。但是当它们以 8 位表示时,如果解释为 2 的补码,它们会被解释为负数还是正数? (我的猜测是它们应该是正数,因为它们都小于 127,这是可以表示为 8 位 2 补码的最大数。)
现在对 [1] + [2] 进行二进制加法,得到结果 ________[3]
现在,当 [3] 用 8 位表示时,如果解释为 2 的补码,它会被解释为负数还是正数? (如果我用十进制计算,我注意到 45 + 107 是 159,大于 127,所以我猜这里会有一个“问题”。)
最后,[3] 的实际值是多少,解释为 2 的补码?在此处填写:___[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。