Skip to content

2026年 408 计算机组成原理 第 14 题

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

题目

已知用 IEEE 754 单精度浮点数表示浮点型变量,采用就近舍入(中间值取偶数)。若浮点型变量 x 为 12.1,则 x 的机器数是( )。

错因

A

阶码、规格化都做对了,但舍入做成了截断——把第 23 位以后的尾数直接砍掉,得到尾数 100 0001 1001 1001 1001 1001。题目明说"就近舍入(中间值取偶数)",被舍部分是 1 1001100...(最高位是 1 且后面非零),按"四舍六入"应进位(加 1),最低位从 1001 变成 1010,得到 999A 而非 9999。

C

整数部分二进制位数算错——把 12 当成了 5 位 11100B 而不是 4 位 1100B,导致规格化时多挤了一位。这样 12.1 被错误地写成 1.1100 0000 1100 1100 ... × 2^4(其实表示的是 28.1 附近的值),阶码 = 4 + 127 = 131 = 1000 0011,机器数前 12 位变成 0100 0001 1110 0000 = 41E0,后续尾数照搬 0.1 的循环节但少了截断处理。

D

错误源同 C(把 12 当成 11100B);另外舍入这一步注意到了"应进位",所以末位从 CCCC 变成 CCCD。整数转二进制写错位数是浮点题最隐蔽的坑——12 = 8+4 = 1100B(4 位),不是 11100B(5 位),后者代表 28。

总解析

IEEE 754 单精度格式(共 32 位):

31S3023E8 bits220M23 bits
  • S:1 位符号位(0 正 1 负)
  • E:8 位阶码(移码,偏移量 127)
  • M:23 位尾数(隐含前导 1)

第一步:把 12.1 写成二进制

整数部分 12 = 1100B(4 位)。

小数部分 0.1 不能精确表示,是无限循环二进制:

运算结果
0
0
0
1
1
0
循环节为 0011

所以 (首位 0001 后无限循环 0011)。

合起来:

第二步:规格化

把小数点左移到最高位 1 后面:

尾数小数点后从左数第 23 位的截止位置:

位号:   1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | 24 25 ...
尾数:   1  0  0  0  0  0  1  1  0  0  1  1  0  0  1  1  0  0  1  1  0  0  1 | 1  0  0  1  1  ...

第 23 位(最低位)是 1,第 24 位起的"被舍部分" = 1 0011 0011 ...(首位是 1,后续非零)。

第三步:就近舍入

被舍部分形态舍入动作
首位 = 0直接截断(向下)
首位 = 1,后续非零(> 中间值)向上进位(最低位 + 1)
首位 = 1,后续全 0(恰好中间值)偶数舍入:使最低位为 0

本题被舍部分 1 0011... 后续非零 → 向上进位

尾数最终:100 0001 1001 1001 1001 1010

第四步:拼装 32 位

字段计算二进制
符号位 Sx = 12.1 > 00
阶码 E真阶 3 + 偏置 127 = 1301000 0010
尾数 M上一步的进位结果100 0001 1001 1001 1001 1010

合并:

0 | 1000 0010 | 100 0001 1001 1001 1001 1010

按 4 位重新分组:

0100 0001 0100 0001 1001 1001 1001 1010
=  4    1    4    1    9    9    9    A

机器数 = 4141 999AH

最终答案是 B(4141 999AH)

关键易错点

  1. 12 = 1100B(4 位),不是 11100B(5 位)——位数算错全盘错
  2. 0.1 是无限循环 0001 1001 1001 ...循环节是 0011,不是 1100
  3. 就近舍入时被舍部分是 1xxxx... 且至少一位非零 → 进位;不是简单地"看第 24 位是 1 就进"

最后更新:

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

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