Skip to content

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

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

题目

float 型数据通常用 IEEE754 单精度浮点数格式表示。若编译器将 float 型变量 x 分配在一个 32 位浮点寄存器 FR1 中,且 x=-8.25,则 FR1 的内容是( )

错因

B

把"-8.25"误算成了一个数量级大得多的负数。该位串对应 ,与 完全不沾边——一定是规格化阶段把小数点移位的方向 / 步数算错了,且尾数没去掉隐含的 1,导致整段比对错位。保险做法:每一步都按 "" 这种最朴素的形式写在草稿上,不要心算。

C

阶码 E=10000011=131,对应真值 4。尾数与正确答案完全一样,错只错在阶码。两种最常见的诱因——

  1. 偏移量记成 +128(套用了" 而不是 "的错误规则,正确的单精度偏移量是 +127
  2. 直接把整数部分二进制位数当阶码:1000 是 4 位,就把 E=4。正确公式是 E = 整数部分位数 − 1,因为规格化后只保留 1 位整数(隐含的 1)

D

阶码 E=131(同 C 错)+ 尾数 11000010... 也错了——应当是 00001000...。两步同时出错,明显是没按 "符号 → 二进制 → 规格化 → 拆字段" 的标准流程走,建议看完正解后用题给数据完整复算一遍。

总解析

第一步:把 |x| 转成二进制

第二步:规格化为 IEEE 754 形式

把小数点左移 3 位:

所以真值

第三步:填入 32 位三段(符号 / 阶码 / 尾数)

  • 符号位 (x 是负数)
  • 阶码 = 真值 + 偏移量 =
    • 关键易错点:单精度偏移量是 127),不是 128
  • 尾数 = 把 1.00001 中隐含的 1 去掉后的小数部分,再补 0 凑齐 23 位:00001000000000000000000
31S13023E8 bits10000010220M23 bits00001000000000000000000

第四步:4 位一组拼成十六进制

位区间31..2827..2423..2019..1615..1211..87..43..0
二进制11000001000001000000000000000000
十六C1040000

C1040000H

最终答案是 A(C1040000H)

单精度三大易错点速记

  1. 偏移量是 127,不是 128
  2. 尾数 不含隐含的 1
  3. 真值阶码 = 整数部分位数 − 1(规格化后只剩 1 位整数)

最后更新:

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

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