1
0
0
【中软设】2.3 计算机组成与体系结构-浮点数表示

## 概述
浮点数的表示是软考软件设计师科目「计算机组成与体系结构」章节数的表示部分的必考考点。本节核心内容三块:
1. **浮点数的表示公式** —— 尾数、基数、阶码三要素
2. **浮点数加减运算的三步过程** —— 对阶 → 尾数计算 → 结果格式化
3. **表示范围与精度的决定因素** —— 阶码管范围、尾数管精度(选择题高频考法)
---
## 一、浮点数的表示公式

浮点数的一般表示形式:
```
N = 尾数 × 基数^指数
```
- **尾数**:决定数的有效精度
- **基数**:在计算机中通常固定为 **2**(讲师在板书中手写标注强调)
- **指数(阶码)**:决定数的表示范围
## 二、浮点数加减运算的三步骤
运算过程:**对阶 → 尾数计算 → 结果格式化**
课件原始例式:`1.23×2² + 3.2×2⁴`

### 第 1 步:对阶(小数向大数看齐)
原则:**小阶向大阶对齐**,通过**较小数的尾数右移**实现。
以 `1.23×2² + 3.2×2⁴` 为例(阶码 2 < 4,把 2 对齐到 4):
```
1.23×2² (阶码 2 → 4,尾数右移两位)
= 0.123×2³
= 0.0123×2⁴
```

### 第 2 步:尾数计算
阶码统一后,尾数直接相加。讲师用竖式演示 `3.2 + 0.0123` 逐位相加:

```
0.0123×2⁴ + 3.2×2⁴ = (0.0123 + 3.2)×2⁴ = 3.2123×2⁴
```
### 第 3 步:结果格式化
把结果整理成 `尾数×2^阶码` 的标准形式,即 `3.2123×2⁴`。
## 三、浮点数表示的四大特点(背熟,直接得分)
| # | 特点 | 考点提示 |
|---|------|---------|
| 1 | 对阶时,**小数向大数看齐** | 判断对阶方向 |
| 2 | 对阶是通过**较小数的尾数右移**实现的 | 尾数右移 = 阶码增大 |
| 3 | **阶码的位数**决定数的表示**范围**,位数越多范围越大 | 范围 ↔ 阶码 |
| 4 | **尾数的位数**决定数的有效**精度**,位数越多精度越高 | 精度 ↔ 尾数 |
一句话记忆:**范围看阶码,精度看尾数**。
---
## 四、真题实战
### 真题 1:阶码 / 尾数位数与范围 / 精度的关系

**题目**:对于长度相同但格式不同的两种浮点数,假设前者阶码长、尾数短,后者阶码短、尾数长,其他规定都相同,则二者可表示数值的范围和精度情况为( )。
- A、二者可表示的数的范围和精度相同
- B、前者所表示的数的范围更大且精度更高
- C、前者所表示的数的范围更大但精度更低
- D、前者所表示的数的范围更小但精度更高
**解析**(讲师手写批注推导):
- 前者阶码长 → 由特点 3:**范围更大**
- 前者尾数短 → 由特点 4:**精度更低**
- 排除法验证:B 的"精度更高"与尾数短矛盾 ✗;D 的"范围更小"与阶码长矛盾 ✗

**答案:C**(前者所表示的数的范围更大但精度更低)
> 记忆锚点:总位数固定时,阶码和尾数**此消彼长**——范围和精度不可兼得。
### 真题 2:由机器码求浮点数真值

**题目**:某种机器的浮点数表示格式如下(允许非规格化表示)。若阶码以补码表示,尾数以原码表示,则 `1 0001 0 0000000001` 表示的浮点数是( )。
格式:**1 位阶符 + 4 位阶码(补码)+ 1 位数符 + 10 位尾数(原码)**
- A、2⁻¹⁶ × 2⁻¹⁰
- B、2⁻¹⁵ × 2⁻¹⁰
- C、2⁻¹⁶ ×(1-2⁻¹⁰)
- D、2⁻¹⁵ ×(1-2⁻¹⁰)
**解题步骤**:

**第 1 步:拆分机器码**
```
1 0001 0 0000000001
│ │ │ │
│ │ │ └─ 尾数(10 位,原码)= 0000000001
│ │ └─── 数符(1 位)= 0(正数)
│ └──────── 阶码数值位(4 位)
└────────── 阶符(1 位)
阶码整体 = 1 0001(含阶符的 5 位补码)
```
**第 2 步:求阶码真值**(补码 10001 → 真值)

```
补码 1 0001:符号位 1 → 负数
数值位 0001 → 取反 1110 → 加 1 → 1111(二进制)= 15(十进制)
所以阶码真值 = -15
```
**第 3 步:求尾数真值**(原码 0000000001,小数点在最高位之前)

```
尾数 = 0.0000000001(二进制小数,1 在小数点后第 10 位)
= 2⁻¹⁰
数符 = 0 → 正数
```
**第 4 步:套公式组装**
```
N = 尾数 × 基数^阶码 = 2⁻¹⁰ × 2⁻¹⁵
```

**答案:B**(2⁻¹⁵ × 2⁻¹⁰)
**干扰项辨析**:
| 干扰项 | 错在哪 |
|--------|--------|
| A / C 的 2⁻¹⁶ | 把阶码真值误算成 -16(补码转换出错) |
| C / D 的 (1-2⁻¹⁰) | 误按**规格化**尾数处理;题干明确"允许非规格化表示",尾数就是 2⁻¹⁰ 本身 |
---
## 核心要点
- 浮点数公式:**N = 尾数 × 基数^指数**,计算机中基数固定为 2
- 加减运算三步:**对阶 → 尾数计算 → 结果格式化**
- 对阶规则:**小数向大数看齐**,靠**较小数尾数右移**实现
- **阶码位数 → 表示范围;尾数位数 → 有效精度**(总位数固定时二者此消彼长)
- 解机器码题的套路:**拆位 → 阶码补码转真值 → 尾数原码转小数 → 套公式**;注意题干是否允许非规格化
