vault backup: 2026-07-04 12:32:07
This commit is contained in:
@@ -2,6 +2,7 @@
|
||||
|
||||
> 📖 本章介绍计算机中数据的表示方法和算术运算,是课程的重点和难点。
|
||||
> 🎯 重点理解补码运算和浮点数表示
|
||||
> ⚠️ 考试范围:不考6.3.4、6.4.2、6.4.3、6.5节。重点复习例题6.2~6.4、6.6、6.8~6.23、6.29、6.30
|
||||
|
||||
---
|
||||
|
||||
@@ -13,6 +14,7 @@
|
||||
- [[#6.4 定点运算]]
|
||||
- [[#6.5 浮点运算]]
|
||||
- [[#本章小结]]
|
||||
- [[#真题与作业精选]]
|
||||
- [[#例题与解析]]
|
||||
|
||||
---
|
||||
@@ -222,9 +224,20 @@ graph LR
|
||||
|
||||
### 6.3.3 IEEE 754标准
|
||||
|
||||
> ⚠️ **这是考试高频考点**,IEEE 754格式转换在期中考试和样卷中都出现过。
|
||||
|
||||
**单精度浮点数(32位)**:符号位1位,阶码8位(移码表示),尾数23位
|
||||
**双精度浮点数(64位)**:符号位1位,阶码11位(移码表示),尾数52位
|
||||
|
||||
**IEEE 754格式要点**:
|
||||
- 阶码采用移码表示,偏移量为 $2^{n-1}-1$(单精度偏移127,双精度偏移1023)
|
||||
- 尾数隐含一个整数位1(隐含的"1"),实际存储的是小数部分
|
||||
- 阶码全0和全1有特殊含义(0、无穷大、NaN)
|
||||
|
||||
> [!example] 示例:IEEE 754转换
|
||||
> 十进制-53 → IEEE 754单精度:符号位1,阶码132(偏移后),尾数1.10101
|
||||
> 详细过程见下方"真题与作业精选"部分
|
||||
|
||||
IEEE 754标准是浮点数的"国家标准":单精度32位精度较低但速度快,用于大多数图形处理和科学计算;双精度64位精度高但速度慢,用于高精度科学计算和金融计算。
|
||||
|
||||
---
|
||||
@@ -233,32 +246,23 @@ IEEE 754标准是浮点数的"国家标准":单精度32位精度较低但速
|
||||
|
||||
### 6.4.1 移位运算
|
||||
|
||||
> ⚠️ **算术移位是作业原题考点**,不同编码(原码、补码、反码)的移位规则不同,需要特别注意。
|
||||
|
||||
**算术移位**:左移相当于乘以2,右移相当于除以2
|
||||
**逻辑移位**:左移高位移出低位补0,右移低位移出高位补0
|
||||
|
||||
**不同编码的移位规则**:
|
||||
|
||||
| 编码 | 左移低位补 | 右移高位补 |
|
||||
|------|-----------|-----------|
|
||||
| 原码 | 补0 | 补0 |
|
||||
| 反码 | 补0(正数)/补1(负数) | 补0(正数)/补1(负数) |
|
||||
| 补码 | 补0 | 正数补0,负数补1(即补符号位) |
|
||||
|
||||
**注意**:算术左移可能溢出。比如原码1.1101000左移一位得到1.1010000,最高数值位的1被移出导致溢出。这是考试中常见的陷阱,三种编码的移位结果可能不同,具体示例见"真题与作业精选"部分。
|
||||
|
||||
算术移位像移动小数点,左移小数点向右移动数值变大,右移小数点向左移动数值变小。逻辑移位所有位向左或向右移动。1010左移1位变成10100(10→20)。
|
||||
|
||||
### 6.4.2 加减运算
|
||||
|
||||
**补码加减运算**:加法直接相加,减法减数变补码后相加
|
||||
|
||||
**溢出判断**:正溢出两个正数相加结果为负,负溢出两个负数相加结果为正
|
||||
|
||||
补码加减运算像时钟运算:9+7=16≡4(mod 12),9-5=9+7=16≡4(mod 12)。127+1=-128(8位补码溢出)。
|
||||
|
||||
### 6.4.3 乘法运算
|
||||
|
||||
**原码乘法**:符号位单独处理,数值部分相乘
|
||||
**补码乘法**:直接用补码相乘
|
||||
|
||||
乘法运算像重复加法:10×13=130,-6×-3=18。
|
||||
|
||||
### 6.4.4 除法运算
|
||||
|
||||
**原码除法**:符号位单独处理,数值部分相除
|
||||
**补码除法**:直接用补码相除
|
||||
|
||||
除法运算像重复减法:10÷2=5,-6÷2=-3。
|
||||
**逻辑移位**:左移高位移出低位补0,右移低位移出高位补0
|
||||
|
||||
---
|
||||
|
||||
@@ -266,6 +270,8 @@ IEEE 754标准是浮点数的"国家标准":单精度32位精度较低但速
|
||||
|
||||
### 6.5.1 浮点加减运算
|
||||
|
||||
> ⚠️ 6.5节不在考试范围内,以下内容仅供了解。
|
||||
|
||||
**步骤**:
|
||||
1. **对阶**:使两个数的阶码相同
|
||||
2. **尾数运算**:对阶后进行尾数加减
|
||||
@@ -316,6 +322,135 @@ IEEE 754标准是浮点数的"国家标准":单精度32位精度较低但速
|
||||
|
||||
---
|
||||
|
||||
## 📖 真题与作业精选
|
||||
|
||||
> 以下是来自期中考试、样卷和课后作业的真实题目,覆盖本章核心考点。
|
||||
|
||||
### 真题1:补码加减运算(期中原题)
|
||||
|
||||
**题目**:已知 A=-87, B=53,用8位补码计算 A-B。
|
||||
|
||||
**解答过程**:
|
||||
|
||||
首先求出A和B的补码表示:
|
||||
- A = -87,87的二进制为01010111,取反加1得 [A]补 = 10101001
|
||||
- B = 53,53的二进制为00110101,[B]补 = 00110101
|
||||
- A - B = A + (-B),需要求 [-B]补:B的补码取反加1得 [-B]补 = 11001011
|
||||
|
||||
补码相加:
|
||||
```
|
||||
10101001 (A的补码)
|
||||
+ 11001011 (-B的补码)
|
||||
-----------
|
||||
1 01110100 最高位进位丢弃
|
||||
```
|
||||
|
||||
结果 [A-B]补 = 01110100,真值为 +116。
|
||||
|
||||
**判断溢出**:A是负数(符号位1),-B是负数(符号位1),两个负数相加结果为正数(符号位0),发生**负溢出**。
|
||||
|
||||
> 💡 这道题展示了补码减法的完整过程:减法转化为加法,以及双符号位溢出判断法——两个负数相加得正数即为溢出。
|
||||
|
||||
### 真题2:IEEE 754转换(样卷原题)
|
||||
|
||||
**题目**:将IEEE 754单精度浮点数 C2540000H 转换为十进制。
|
||||
|
||||
**解答过程**:
|
||||
|
||||
十六进制转二进制:C2540000H = 11000010 01010100 00000000 00000000
|
||||
|
||||
按IEEE 754格式拆分:
|
||||
- 符号位:**1**(负数)
|
||||
- 阶码:**10000100** = 132,偏移后 e = 132 - 127 = 5
|
||||
- 尾数:**01010100 00000000 00000000**,加上隐含的1,实际尾数为 1.01010100... = 1.10101
|
||||
|
||||
计算结果:
|
||||
$$-(1.10101)_2 \times 2^5 = -110101.0_2 = -(53)_{10}$$
|
||||
|
||||
> 💡 IEEE 754转换是高频考点,步骤:十六进制→二进制→拆分符号/阶码/尾数→阶码减偏移量→组装尾数(加隐含1)→计算结果。考试时务必注意阶码偏移量是127(单精度)或1023(双精度)。
|
||||
|
||||
### 真题3:浮点数表示(期中原题)
|
||||
|
||||
**题目**:用浮点数表示 x₁=7.375 和 x₂=-86.5,分别写出阶码和尾数的原码及补码形式。
|
||||
|
||||
**解答过程**:
|
||||
|
||||
**x₁ = 7.375**:
|
||||
- 转换为二进制:7.375 = 111.011 = 0.111011 × 2³(规格化)
|
||||
- 阶码3,8位原码:00000011
|
||||
- 尾数0.111011,补足位数:0.1110110000
|
||||
- 因为是正数,原码 = 补码
|
||||
|
||||
**x₂ = -86.5**:
|
||||
- 转换为二进制:86.5 = 1010110.1 = 0.10101101 × 2⁷(规格化)
|
||||
- 阶码7,8位原码:00000111
|
||||
- 尾数为负数:原码为 1.1010110100,补码需要对负数尾数取反加1
|
||||
|
||||
> 💡 浮点数表示需要注意:1)规格化(尾数最高位为1);2)阶码和尾数的符号分开处理;3)负数尾数的补码表示不要遗漏。这也是期中考试考过的原题。
|
||||
|
||||
### 真题4:算术移位(第6章作业原题)
|
||||
|
||||
**题目**:对以下三个数分别进行算术左移一位,比较三种编码的结果。
|
||||
|
||||
- [x]原 = 1.1101000
|
||||
- [y]补 = 1.1101000
|
||||
- [z]反 = 1.1101000
|
||||
|
||||
**解答过程**:
|
||||
|
||||
**原码左移**:符号位不变,数值位整体左移,低位补0。
|
||||
- 1.1101000 → 1.1010000
|
||||
- 原码左移后最高数值位的1被移出,发生**溢出**,结果出错。
|
||||
|
||||
**补码左移**:符号位不变,数值位整体左移,低位补0。
|
||||
- 1.1101000 → 1.1010000
|
||||
- 补码的左移规则与原码相同(低位补0),此结果正确。
|
||||
|
||||
**反码左移**:负数反码低位补1。
|
||||
- 1.1101000 → 1.101000**1**
|
||||
- 反码负数左移时低位补1,结果正确。
|
||||
|
||||
> 💡 三种编码左移规则的区别是作业重点:原码和补码左移低位补0,但原码需额外判断溢出;反码负数低位补1。这些细微差异是考试中容易丢分的地方。
|
||||
|
||||
---
|
||||
|
||||
## ⚡ 知识点速记卡
|
||||
|
||||
> 考前快速过一遍,30秒回忆整章核心
|
||||
|
||||
**本章考试重点排序**(按出现频率):
|
||||
1. **补码加减运算** —— 期中必考,期末高频,掌握溢出判断(双符号位法)
|
||||
2. **IEEE 754浮点数转换** —— 样卷、期中均有原题,熟记偏移量127/1023
|
||||
3. **浮点数规格化表示** —— 期中原题,注意阶码和尾数分别编码
|
||||
4. **算术移位** —— 作业原题,三种编码移位规则的区别
|
||||
5. **Booth算法(补码乘法)** —— 课后习题重点,理解每步的判断规则
|
||||
|
||||
**四种编码速记**:原码(符号+绝对值,零有两种)、补码(正代负,零唯一,运算最简单)、反码(补码-1,过渡用)、移码(补码符号取反,便于比较大小)。
|
||||
|
||||
**正数**:原码=反码=补码。**负数**:补码=反码+1。口诀:正数不变,负数取反加1。
|
||||
|
||||
**补码范围**(n位):-2^(n-1) ~ +(2^(n-1)-1)。8位补码:-128~127。-128没有对应原码!
|
||||
|
||||
**补码加减运算**:加法直接加,减法变补码后加。溢出判断:两个正数相加得负数(正溢出),两个负数相加得正数(负溢出)。口诀:同号相加看结果,异号相加不会溢出。
|
||||
|
||||
**定点数**:小数点位置固定。定点整数(小数点在末尾)、定点小数(小数点在符号位后)。
|
||||
|
||||
**浮点数 = 尾数 × 2^阶码**,类似科学计数法。规格化:尾数最高位为1,左规尾数左移阶码减1,右规尾数右移阶码加1。
|
||||
|
||||
**IEEE 754单精度(32位)**:1位符号 + 8位阶码(移码,偏移127)+ 23位尾数。隐含整数位1。阶码全0和全1有特殊含义。
|
||||
|
||||
**IEEE 754转换速查**:
|
||||
- 十六进制→二进制→拆分(1+8+23)
|
||||
- 阶码值 - 127 = 实际指数
|
||||
- 尾数前加隐含的1.,乘以2的指数次方
|
||||
- 符号位1为负,0为正
|
||||
|
||||
**浮点加减五步**:对阶(小阶向大阶看齐)→ 尾数运算 → 规格化 → 舍入 → 溢出判断。
|
||||
|
||||
**移位运算**:算术左移=×2,算术右移=÷2。逻辑移位补0,算术移位保持符号位。注意原码、补码、反码移位时低位补值不同。
|
||||
|
||||
---
|
||||
|
||||
## 🧪 例题与解析
|
||||
|
||||
### 例题1:补码计算
|
||||
@@ -377,30 +512,6 @@ IEEE 754标准是浮点数的"国家标准":单精度32位精度较低但速
|
||||
|
||||
---
|
||||
|
||||
## ⚡ 知识点速记卡
|
||||
|
||||
> 考前快速过一遍,30秒回忆整章核心
|
||||
|
||||
**四种编码速记**:原码(符号+绝对值,零有两种)、补码(正代负,零唯一,运算最简单)、反码(补码-1,过渡用)、移码(补码符号取反,便于比较大小)。
|
||||
|
||||
**正数**:原码=反码=补码。**负数**:补码=反码+1。口诀:正数不变,负数取反加1。
|
||||
|
||||
**补码范围**(n位):-2^(n-1) ~ +(2^(n-1)-1)。8位补码:-128~127。-128没有对应原码!
|
||||
|
||||
**补码加减运算**:加法直接加,减法变补码后加。溢出判断:两个正数相加得负数(正溢出),两个负数相加得正数(负溢出)。
|
||||
|
||||
**定点数**:小数点位置固定。定点整数(小数点在末尾)、定点小数(小数点在符号位后)。
|
||||
|
||||
**浮点数 = 尾数 × 2^阶码**,类似科学计数法。规格化:尾数最高位为1,左规尾数左移阶码减1,右规尾数右移阶码加1。
|
||||
|
||||
**IEEE 754单精度(32位)**:1位符号 + 8位阶码(移码,偏移127)+ 23位尾数。阶码全0和全1有特殊含义。
|
||||
|
||||
**浮点加减五步**:对阶(小阶向大阶看齐)→ 尾数运算 → 规格化 → 舍入 → 溢出判断。
|
||||
|
||||
**移位运算**:算术左移=×2,算术右移=÷2。逻辑移位补0,算术移位保持符号位。
|
||||
|
||||
---
|
||||
|
||||
## 🔗 相关链接
|
||||
|
||||
- [[00_计算机组成原理学习指南]] - 返回主目录
|
||||
@@ -412,3 +523,4 @@ IEEE 754标准是浮点数的"国家标准":单精度32位精度较低但速
|
||||
|
||||
*本章难度:⭐⭐⭐⭐⭐ 困难*
|
||||
*重要程度:⭐⭐⭐⭐⭐ 重点*
|
||||
*考试提醒:本章是期中考试和期末考试的核心章节,补码运算和IEEE 754几乎必考*
|
||||
|
||||
Reference in New Issue
Block a user