Skip to content

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

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

题目

已知带符号整数用补码表示,变量 x、y、z 的机器数分别为 FFFDH、FFDFH、7FFCH,下列结论中,正确的是( )。

错因

A

无符号比较时确实 z 最小(z 的最高位是 0、x 和 y 的最高位都是 1),但 x 和 y 的大小关系搞反了。FFFD = 65533,FFDF = 65503,应该 y < x,而不是 x < y。可能只比对了第三位 F vs D,误以为 D < F 就让位置上含 D 的 y 排在 x 后面,但 x 第三位是 F、第四位是 D,y 第三位是 D——位高的差异(FFFD 的第三位 F vs FFDF 的第三位 D)才决定大小,更高位的差异先生效。

B

完全没区分"无符号 vs 有符号"。无符号下,最高位仍按数值位计入,FFxx 全都比 7Fxx 大得多——绝不可能 x < z。这个错误源于把"带符号下负数比正数小"的直觉错带进了无符号语境。

C

正确判断了"x、y、z 中只有 z 是正数(最高位 0),x 和 y 是负数(最高位 1)",但忽略了负数的补码越靠近 0xFFFF 越接近 0、越靠近 0x8000 越小。x = FFFD = -3、y = FFDF = -33,y 离 0xFFFF 更远(更小),所以 y < x——选项 C 把 x、y 的次序搞反了。

总解析

第一步:把三个机器数分别按"无符号"和"有符号补码"翻成真值

机器数无符号真值有符号补码真值
x = FFFDH65533
y = FFDFH65503
z = 7FFCH32764

有符号真值的快速求法(最高位为 1 时是负数):

  • FFFDH:,所以补码值 (公式:负补码真值 = ,等价于"")
  • FFDFH:,补码真值
  • 7FFCH:最高位 0,正数,直接读 =

第二步:分别排序

无符号下:z < y < x(A、B 都不对)

有符号下:y < x < z(D 命中)

第三步:核对选项

  • A "z < x < y":错(应为 z < y < x)
  • B "x < y < z":错(无符号下 z 最小,绝不可能在最大位)
  • C "x < y < z":错(应为 y < x < z)
  • D "y < x < z":✓

最终答案是 D

关键易错点速记

  1. 同一机器数在无符号和有符号下大小关系完全可能相反——无符号 FFFD 是最大数附近,有符号下却是 (接近 0)
  2. 负数补码:越靠近 0xFFFF 越接近 0。FFFD(=-3)比 FFDF(=-33)大
  3. 看到一堆 FFxx 形式的机器数,先判断 hi-bit 决定无符号 / 有符号语义,再按各自规则排序

最后更新:

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

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