Appearance
题目
32 位补码所能表示的整数范围是( )。
错因
A
最小值多算了一倍: 是 ,远超 32 位补码的下限()。错误根源:把"32 位"直接代入 ,没意识到补码的负数范围是 (多出来的一位是符号位)。最大值 算对了。
C
把 32 位补码当成了无符号或对称表示。 是 32 位无符号能表示的最大值(即全 1 = ),不是补码的最大值。补码下符号位占 1 位,正数最大只能到 。最小值同 A 也错了,且与正数最大值不对称(正数 ,负数 ,差 1)——明显违反 n 位补码"非对称:负数比正数多 1 个值"的特征。
D
最小值算对了 ,但最大值多算了一位: 是 32 位无符号最大,不是 32 位补码最大。补码下"符号位是 0"才是非负数,所以正数最大只能用 31 位数值位 → 。
总解析
核心公式:n 位补码表示范围 =
记忆方法:
- 32 位中最高 1 位是符号位,剩 31 位是数值位
- 正数最大:符号位 0、其余 31 位全 1 →
- 负数最小:符号位 1、其余全 0 →
代入 n = 32:
最终答案是 B。
与原码、反码对比:
| 编码 | n 位表示范围 | 对称性 |
|---|---|---|
| 原码 | 对称(有 +0 和 -0 两种零) | |
| 反码 | 对称(有 +0 和 -0 两种零) | |
| 补码 | 不对称(负数多 1 个) | |
| 无符号 | — |
易错点:
- 补码负数多 1 个——这是补码与原 / 反码最大的区别
- n 位补码 vs n 位无符号:差一个量级(前者 、后者 )
- 看到选项里出现 或 直接排除(n 位补码绝不会用到这两个端点)