计算机组成原理第二章 - 定点数与浮点数
:::tip
本页面含有AI生成内容
感谢Copilot的美化排版与样式
:::
计算机组成原理第二章 - 定点数与浮点数
📚 基础知识回顾
1. 🔄 数的进制转换
1.1 十进制转其他进制
🎯 核心方法:
- 整数部分:除基数取余法
- 小数部分:乘基数取整法
📝 十进制转二进制(整数)
方法:除 2 取余法,余数倒序排列
示例:
✅ 结果:
📝 十进制转十六进制
示例:
✅ 结果:
1.2 其他进制转十进制
🎯 核心公式:
其中: 为基数, 为各位数字, 为权值
📝 示例1:
📝 示例2:
1.3 小数转换详解
📝 示例:
整数部分:
小数部分(乘2取整法):
✅ 结果:
2. 🔢 负数表示方法
2.1 原码、反码、补码对比
| 编码方式 | 正数 | 负数 | 0的表示 | 运算特点 |
|---|---|---|---|---|
| 原码 | 符号位0 + 真值 | 符号位1 + 真值 | +0, -0两种 | 需要符号位单独处理 |
| 反码 | 与原码相同 | 符号位1 + 数值位取反 | +0, -0两种 | 加法有特殊规则 |
| 补码 | 与原码相同 | 反码 + 1 | 唯一0 | 统一加减法运算 |
📝 示例(8位):
| 数值 | 原码 | 反码 | 补码 |
|---|---|---|---|
| +5 | 00000101 |
00000101 |
00000101 |
| -5 | 10000101 |
11111010 |
11111011 |
| +0 | 00000000 |
00000000 |
00000000 |
| -0 | 10000000 |
11111111 |
00000000 |
2.2 补码的优势
⚡ 关键优势:
- 零的唯一表示
- 加减法运算统一
- 硬件实现简单
- 表数范围最大
📝 补码范围: 位补码表示范围为
🎯 定点数表示
1. 📖 定点数基础概念
1.1 定义与分类
🔑 定点数: 小数点位置固定的数值表示方法
| 类型 | 定义 | 示例 | 应用场景 |
|---|---|---|---|
| 定点整数 | 小数点在末尾 | 整数运算 | |
| 定点小数 | 小数点在首位后 | 精密计算 |
💾 存储格式: 符号位(1位) + 数值位(n位) = 总长度 位
1.2 关键特性对比
| 特性 | 定点数 | 浮点数 |
|---|---|---|
| 📊 表示范围 | 有限,易溢出 | 极大范围 |
| 🎯 精度 | 固定精度 | 动态精度 |
| ⚡ 运算速度 | 快 | 相对较慢 |
| 🔧 硬件复杂度 | 简单 | 复杂 |
| 🔋 功耗 | 低 | 高 |
2. 📊 定点数表示范围
2.1 定点小数(纯小数)
📋 范围对比表:
| 编码类型 | 最大正数 | 最小正数 | 最大负数 | 数据范围 |
|---|---|---|---|---|
| 原码 | |
|
|
|
| 补码 | |
|
|
📝 示例(8位定点小数,):
- 补码范围: 即
2.2 定点整数(纯整数)
📋 范围对比表:
| 编码类型 | 最大正数 | 最小负数 | 数据范围 |
|---|---|---|---|
| 原码 | |
|
|
| 补码 | |
|
📝 示例(8位定点整数,):
- 补码范围:
3. 🔄 数制转换详解
3.1 十进制 → 二进制定点数
🎯 定点小数转换步骤:
📝 示例: 位定点小数
✅ 结果:
🎯 定点整数转换:
📝 示例: 位定点整数
步骤:
3.2 二进制定点数 → 十进制
🎯 定点小数转换公式:
📝 示例: → 十进制
步骤:
- 符号位为1,表示负数
- 数值位:
- 按权展开:
- 补码转换:先减1得反码 ,再取反得原码
- 结果:
🎯 定点整数转换公式:
3.3 编码转换规则
🔄 原码 ↔ 补码:
| 转换方向 | 正数 | 负数 |
|---|---|---|
| 原码→补码 | 不变 | 数值位取反+1 |
| 补码→原码 | 不变 | 减1后数值位取反 |
📝 示例: 的编码转换(8位)
4. ⚡ 定点数运算
4.1 补码加减法
🎯 运算规则:
📝 示例: (8位)
4.2 溢出检测
⚠️ 溢出判断方法:
- 进位标志法:
- 符号检测法: 同号相加结果异号
📝 溢出示例: (8位补码)
检测: → 溢出
5. 💼 定点数应用场景
| 应用领域 | 特点 | 典型应用 |
|---|---|---|
| 🤖 嵌入式系统 | 低功耗、实时性高 | 传感器处理、控制系统 |
| 🎵 数字信号处理 | 高精度、低延迟 | FFT算法、数字滤波器 |
| 💰 金融计算 | 避免浮点误差 | 货币计算、利息计算 |
| 🎮 图形处理 | 并行计算友好 | 像素处理、坐标变换 |
🌊 浮点数表示
1. 🔬 浮点数核心概念
1.1 通用表示形式
🎯 浮点数公式:
参数说明:
- :符号位(0=正,1=负)
- :尾数(有效数字)
- :阶码(指数)
- :基数(通常为2)
1.2 IEEE 754标准
📋 单精度(32位)格式:
| 字段 | 位数 | 范围 | 计算规则 |
|---|---|---|---|
| 符号位 | 1位 | 0或1 | 0=正数,1=负数 |
| 阶码 | 8位 | 0-255 | 实际指数 = |
| 尾数 | 23位 | 0-8388607 | 实际尾数 = (规格化) |
📋 双精度(64位)格式:
| 字段 | 位数 | 偏移量 |
|---|---|---|
| 符号位 | 1位 | - |
| 阶码 | 11位 | 1023 |
| 尾数 | 52位 | - |
📝 转换示例: → IEEE 754单精度
步骤:
- (负数)
- ()
✅ 结果: 1 01111110 10000000000000000000000
2. 📏 浮点数规格化
2.1 规格化条件
🎯 规格化要求:
📋 补码尾数规格化形式:
| 数值类型 | 规格化形式 | 示例 |
|---|---|---|
| 正数 | ||
| 负数 |
2.2 规格化判断表
| 二进制补码 | 是否规格化 | 说明 |
|---|---|---|
| ❌ | 尾数首位非1 | |
| ✅ | 满足 | |
| ❌ | 负数应为形式 | |
| ✅ | 满足 |
3. 📈 浮点数表示范围
3.1 IEEE 754单精度范围
| 数值类型 | 表示范围 | 十进制近似 |
|---|---|---|
| 最大规格化正数 | ||
| 最小规格化正数 | ||
| 最大非规格化数 | ||
| 最小非规格化数 |
3.2 溢出处理
| 情况 | 结果 | 表示 |
|---|---|---|
| 上溢 | 阶码全1,尾数全0 | |
| 下溢 | 非规格化数或0 | 阶码全0 |
4. 🔢 阶码与移码
4.1 移码定义
🎯 移码公式:
💡 移码特性:
- 零的移码为
- 真值与移码单调递增
- 便于大小比较
4.2 移码对照表
📋 8位移码示例(,偏移量=128):
| 真值 | 补码 | 移码 | 十进制值 |
|---|---|---|---|
| -128 | 10000000 |
00000000 |
0 |
| -127 | 10000001 |
00000001 |
1 |
| -1 | 11111111 |
01111111 |
127 |
| 0 | 00000000 |
10000000 |
128 |
| 1 | 00000001 |
10000001 |
129 |
| 127 | 01111111 |
11111111 |
255 |
5. ⚙️ 浮点数运算
5.1 加减运算流程
5.2 运算步骤详解
🔄 步骤1:对阶(小阶向大阶看齐)
📝 示例: ,
- 阶差:
- X尾数右移2位:
➕ 步骤2:尾数加减
📏 步骤3:规格化
- 结果: → 左规1位 → (阶码-1)
🔄 步骤4:舍入
- 0舍1入:
⚠️ 步骤5:溢出判断
- 检查阶码是否超出范围
5.3 典型运算示例
📝 题目: ,,求
条件: 阶码5位,尾数7位(含符号位)
解答过程:
-
对阶:
-
尾数运算:
- → 尾数溢出
-
右规处理:
- 尾数:,阶码+1 →
-
溢出判断:
- 阶码超出5位最大值 → 上溢
6. 🚨 浮点数特殊值
📋 IEEE 754特殊值编码:
| 阶码E | 尾数M | 含义 | 示例 |
|---|---|---|---|
| 全0 | 全0 | 0 00000000 000...000 |
|
| 全0 | 非全0 | 非规格化数 | 0 00000000 000...001 |
| 全1 | 全0 | 0 11111111 000...000 |
|
| 全1 | 非全0 | NaN | 0 11111111 000...001 |
7. ⚠️ 浮点数运算误差
7.1 误差来源
| 误差类型 | 产生原因 | 影响 |
|---|---|---|
| 对阶误差 | 尾数右移丢失低位 | 精度损失 |
| 舍入误差 | 位数限制近似 | 累积误差 |
| 运算误差 | 多次操作叠加 | 结果偏差 |
7.2 误差控制方法
- 🎯 双精度运算: 提高尾数精度
- 📊 误差分析: 估算精度损失
- 🔧 特殊算法: Kahan求和等
📝 精度损失示例:
📝 重要公式总结
🎯 核心公式速查
| 类别 | 公式 | 说明 | | –––––––––– | ———————————————— | –––––––– | –– | ———— | | 进制转换 | | 任意进制转十进制 | | 浮点数 | | IEEE 754标准 | | 补码范围 | | n位补码表示范围 | | 定点小数(原码) | | 原码小数范围 | | 定点小数(补码) | | 补码小数范围 | | 定点整数(补码) | | 补码整数范围 | | 溢出检测 | | 补码溢出判断 | | 移码转换 | | 移码公式 | | 规格化条件 | | 二进制规格化 |
🔍 重要常数
| 标准 | 偏移量 | 表示范围 |
|---|---|---|
| IEEE 754单精度 | 127 | |
| IEEE 754双精度 | 1023 |
📚 复习要点
⭐ 重点掌握
- 🔄 进制转换: 熟练掌握各种进制间的转换方法
- ⚡ 补码运算: 理解补码的优势和运算规则
- 📏 定点数范围: 记住不同编码的表示范围
- 🌊 浮点数格式: 掌握IEEE 754标准格式
- ⚙️ 浮点运算: 理解五步运算流程
- ⚠️ 溢出检测: 掌握各种溢出判断方法
🎯 常考题型
- 进制转换计算
- 原码/反码/补码互转
- 定点数运算与溢出判断
- IEEE 754格式转换
- 浮点数加减运算
- 特殊值识别
💡 记忆技巧
- 补码优势: “统一运算,唯一零值”
- 浮点运算: “对阶→加减→规格→舍入→溢出”
- IEEE 754: “1+8+23=32位单精度,1+11+52=64位双精度”
计算机组成原理第二章 - 定点数与浮点数
作者:xingwangzhe
本文链接:https://xingwangzhe.fun/posts/4f16228c/
本文采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。
留言评论