Skip to content

2015年 408 计算机组成原理 第 13 题

计算机组成原理2015年选择题2分

题目

由 3 个"1"和 5 个"0"组成的 8 位二进制补码,能表示的最小整数( )。

错因

A

补码 -126 对应的位模式是 10000010——里面只有 2 个 1(符号位 1 + 第 1 位 1),不满足"3 个 1"的约束。错答的人多半没回头核对位串里 1 的个数,只挑了"第二小的负数"就交卷。

C

把 3 个 1 都堆在了高位——11100000 确实满足 3 个 1 + 5 个 0,对应真值 −32。但这样补码作为无符号读是 224(很大),对应真值偏向 0;要让负数最小(最负),应该让补码无符号值最小——也就是把多余的 1 尽量往低位放。挑 C 的人方向恰好搞反了。

D

完全是读题错——把"3 个 1 和 5 个 0 组成"误解成"数值是 3",然后加个负号写了 −3。−3 的补码是 11111101,里面有 7 个 1、1 个 0,根本不符合题面约束。

总解析

核心思路:负数补码作为无符号位串读时,值越小,对应真值越负。所以"最小整数"等价于"在 3 个 1 + 5 个 0 的位串中,符号位是 1 的前提下,剩下 7 位组成的无符号数最小"。

第一步:固定符号位

要表示负数,最高位(符号位)必须为 1——这一步就用掉了 3 个 1 中的 1 个。剩下 7 位上要安排 2 个 1 + 5 个 0

第二步:让剩下 7 位组成的二进制数最小

7 位上 2 个 1 + 5 个 0,要数值最小 → 把 2 个 1 都放在最右两位(权值最小的位):

第三步:把这个补码翻译回真值

补码 → 真值的两种等价方法:

方法一(按位权展开):

方法二(取反加 1 法):

步骤结果
原补码10000011
各位取反(含符号位)01111100
+101111101 = 125
加符号−125

第四步:验证一下其他放法都更大(即更接近 0)

位串含 1 个数真值
100000113 ✓−125(最小)
100001013 ✓−123
100001103 ✓−122
100010013 ✓−119
111000003 ✓−32(C 选项,明显更大)

把 1 越往左挪,补码无符号值越大,真值越接近 0。

最终答案是 B(−125)

关键易错点

  1. "由 3 个 1 和 5 个 0 组成"是位模式约束,不是数值约束,不要把 3 当成数值
  2. 补码负数找"最小"= 找符号位为 1 时无符号读最小的位串 → 多余的 1 往最右放
  3. 别忘了符号位本身就占了 1 个 1

最后更新:

🎬 可视化演示
加载中...

提示:可在可视化区直接操作播放、步进、修改参数