Appearance
题目
float 型数据常用 IEEE754 单精度浮点格式表示。假设两个 float 型变量 x 和 y 分别存放在 32 位寄存器 f1 和 f2 中,若 (f1)=CC900000H,(f2)=B0C00000H,则 x 和 y 之间的关系为( )。
错因
B
把"符号相同"看错了。CC 的二进制最高位是 1、B0 的二进制最高位也是 1,两个数的符号位都是 1(都是负数),符号相同。可能是只看了十六进制首字符 C 和 B"长得不一样"就下结论,没真把它们换成二进制看最高位。
C
误把"两个负数中绝对值大的更大"。负数比较恰恰相反——绝对值越大,数越小。x 的阶码远大于 y( vs ),所以 ,但因为都是负数,。把"绝对值大小关系"直接当成"数的大小关系"是常见陷阱。
D
既错符号、又错大小,把两个判断都搞反了。
总解析
第一步:拆 (f1) = CC900000H 的字段
CC90 0000H 的二进制:
1100 1100 1001 0000 0000 0000 0000 0000- 符号位 → x 是负数
- 阶码 ,真值阶
- 尾数 (含隐含的 1)
第二步:拆 (f2) = B0C00000H 的字段
B0C0 0000H 的二进制:
1011 0000 1100 0000 0000 0000 0000 0000- 符号位 → y 是负数
- 阶码 ,真值阶
- 尾数
第三步:比较 x 与 y
| 量 | x | y |
|---|---|---|
| 符号 | 负 | 负 |
| 阶(真值) | 26 | −30 |
| $ | \text | $ |
两者符号相同(都是负数)。两个负数中绝对值大的反而更小(数轴上更靠左):
最终答案是 A(x<y 且符号相同)。
两个常见陷阱:
- 只看十六进制首字符判断符号——必须落到二进制最高位(
C= 1100、B= 1011,最高位都是 1) - 把"绝对值大小"等同于"数大小"——对负数恰好相反,绝对值越大,数越小