惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

C
Cisco Blogs
爱范儿
爱范儿
有赞技术团队
有赞技术团队
博客园 - 【当耐特】
Jina AI
Jina AI
Project Zero
Project Zero
宝玉的分享
宝玉的分享
Martin Fowler
Martin Fowler
WordPress大学
WordPress大学
Simon Willison's Weblog
Simon Willison's Weblog
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
T
Tenable Blog
F
Fortinet All Blogs
大猫的无限游戏
大猫的无限游戏
Last Week in AI
Last Week in AI
月光博客
月光博客
雷峰网
雷峰网
G
Google Developers Blog
V
V2EX
T
Tor Project blog
罗磊的独立博客
Schneier on Security
Schneier on Security
Know Your Adversary
Know Your Adversary
W
WeLiveSecurity
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
P
Privacy International News Feed
S
Securelist
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
P
Proofpoint News Feed
Blog — PlanetScale
Blog — PlanetScale
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
小众软件
小众软件
Scott Helme
Scott Helme
I
Intezer
T
Threat Research - Cisco Blogs
The GitHub Blog
The GitHub Blog
N
Netflix TechBlog - Medium
C
CERT Recently Published Vulnerability Notes
Security Archives - TechRepublic
Security Archives - TechRepublic
酷 壳 – CoolShell
酷 壳 – CoolShell
L
LINUX DO - 最新话题
N
News | PayPal Newsroom
L
Lohrmann on Cybersecurity
T
Troy Hunt's Blog
Google DeepMind News
Google DeepMind News
P
Proofpoint News Feed
人人都是产品经理
人人都是产品经理
Latest news
Latest news
AWS News Blog
AWS News Blog
Apple Machine Learning Research
Apple Machine Learning Research

姓王者的博客

Linux用户Secure Boot自主维护指南 | 姓王者的博客 MAD Bugs 已经开始——关于信息安全的军备竞赛 | 姓王者的博客 解决钉钉Dingtalk无法在Linux新版内核上启动问题-修复可执行栈错误 | 姓王者的博客 突发:GitHub 正遭受大规模 Issue 赌博广告轰炸 | 姓王者的博客 Ubuntu26.04-beta体验:坚毅浣熊! | 姓王者的博客 fakeclaw装作龙虾发贴吧 | 姓王者的博客 找回12年前的QQ记忆 | 姓王者的博客 在Linux上玩Flash网页游戏-洛克王国 | 姓王者的博客 Copilot将使用交互数据来训练 | 姓王者的博客 重要通知-请更新我的GPG公钥 | 姓王者的博客 为了自由Android | 姓王者的博客 GPL"2,3"事 | 姓王者的博客 短文-对VitePlus的一点🤏小贡献 | 姓王者的博客 Bing收录没了?亲测有效的快速恢复指南 | 姓王者的博客 解决桌面设备二维码快速识别的工具-ClipQR | 姓王者的博客 解决 Nautilus 自定义终端插件安装依赖问题 | 姓王者的博客 OpenClaw 该熄火了 | 姓王者的博客 Vite8 - 统一的基建开始 | 姓王者的博客 Astro 6 推出啦 | 姓王者的博客 ubuntu的openvpn异常暂停推送更新 | 姓王者的博客 Ubuntu 24.04 安装 Win10 虚拟机 | 姓王者的博客 ESA-后记:热爱阿里云 | 姓王者的博客 Moonbit 0.8.0 重大发布,我也要改一下我的包 | 姓王者的博客 ESA Pages 边缘开发大赛获奖 | 姓王者的博客 Astro: 优化katex,mermaid和灯箱使用 | 姓王者的博客 从edgeone迁移到esa | 姓王者的博客 出租人类:AI时代的荒诞与真实 | 姓王者的博客 Astro 5.17构建性能优化实践:从18s到13s | 姓王者的博客 Moonbit License Checker 开发使用 | 姓王者的博客 Stalux Astro博客主题自荐 | 姓王者的博客 把Hexo永久链接迁移到Astro | 姓王者的博客 再见👋 LeanCloud | 姓王者的博客 2025年终总结 | 姓王者的博客 许可合规-fancybox | 姓王者的博客 博客主题的软著下来了 | 姓王者的博客 友链图谱 - 汇聚千丝万缕的联系 | 姓王者的博客 chen-er 专为Chen式ER图打造的npm包 | 姓王者的博客 为什么我推荐你使用GPG来加密你的邮件 | 姓王者的博客 2025第三方客户端登录东北大学邮箱 | 姓王者的博客 好久没更新了,过去与未来 | 姓王者的博客 1024 重要的日子 | 姓王者的博客 再也不见Windows10 | 姓王者的博客 偷梁换柱,解决Ubuntu24.04安装Packet Tracer缺失依赖问题 | 姓王者的博客 中秋-来试试Moonbit吧 | 姓王者的博客 Obsidian使用体验 | 姓王者的博客 猪猪侠·一只老猪的逆袭 | 姓王者的博客 国庆日纪念 | 姓王者的博客 GNU 42周年,AI时代的自由精神 | 姓王者的博客 解决Linux上启动游戏总是默认English的情况 | 姓王者的博客 7x24:运维使命 | 姓王者的博客 Tauri2.x实现系统菜单导航Vue路由 | 姓王者的博客 计算机图形学-基本图形生成算法 | 姓王者的博客 数据库原理-关系数据 | 姓王者的博客 数据库原理-设计技巧 | 姓王者的博客 数据库原理E-R模型 | 姓王者的博客 旧忆 - 我曾玩过的游戏 | 姓王者的博客 再谈自由软件 | 姓王者的博客 可能解决Tauri多窗口应用阻塞问题 | 姓王者的博客 Xingwangzhe! Z-Library We miss you and we need your help | 姓王者的博客 计算机组成原理第一章 | 姓王者的博客 不小心写死循环窗口弹出了 | 姓王者的博客 美化Grub界面 | 姓王者的博客 计算机图形学-图形的表示与数据结构 | 姓王者的博客 计算机图形学绪论 | 姓王者的博客 为什么说,大学教育与社会脱节 | 姓王者的博客 VSCode Remote 远程连接服务器记录 | 姓王者的博客 解决Tauri2.x拖拽事件问题 | 姓王者的博客 新学期第一课《计算机图形学》报告 | 姓王者的博客 Tauri在GNOME46+上通知无效的临时解决方法 | 姓王者的博客 窃文者:未经授权转载我文章 | 姓王者的博客 GPG公钥分享文化 | 姓王者的博客 解决在ubuntu上,打包vscode插件问题 | 姓王者的博客 伪造squaremap的玩家显示 | 姓王者的博客 爆,沉浸式翻译泄露敏感信息 | 姓王者的博客 读书:《Free as in Freedom》——若为自由故 | 姓王者的博客 首页文章列表懒加载优化 | 姓王者的博客 Ubuntu 24.04 安装 Vivado 2018.3 | 姓王者的博客 腾讯Edgeone免费版体验 | 姓王者的博客 在 Ubuntu 上实现 Thetis FIDO U2F 密钥登录 | 姓王者的博客 Thetis物理密钥,为什么我们应该使用物理密钥 | 姓王者的博客 高考生过来看!教你精准转换录取位次! | 姓王者的博客 ubuntu无法访问windows磁盘问题 | 姓王者的博客 收信有感,防范钓鱼邮件 | 姓王者的博客 自由不止软件-记录一次zlib上传书籍 | 姓王者的博客 时隔两年,通关夺命邮差2 | 姓王者的博客 博客一周年了,竟然坚持了下来 | 姓王者的博客 Minecraft大电影:不建不散! | 姓王者的博客 是时候了解docker了! | 姓王者的博客 编译原理:LL(1)文法 | 姓王者的博客 编译原理:文法转换 | 姓王者的博客 离散数学:子群的陪集及拉格朗日定理 | 姓王者的博客 离散数学:半群,独异点 | 姓王者的博客 《人工智能生成合成内容标识办法》与个人博客--我们应该做什么? | 姓王者的博客 通识学习:形式语言与自动机,布尔代数与数进制 | 姓王者的博客 离散数学:代数系统(一) | 姓王者的博客 Webmapview:一个我的世界内置网页地图浏览Fabric模组 | 姓王者的博客 海岛机器人农场试玩 | 姓王者的博客 正则表达式学习 | 姓王者的博客 抓取个人博客文章目录到github主页 | 姓王者的博客 制作github贪吃蛇贡献图 | 姓王者的博客
计算机组成原理第二章 - 定点数与浮点数 | 姓王者的博客
作者:xingwangzhe · 2025-09-14 · via 姓王者的博客

计算机组成原理第二章 - 定点数与浮点数

🕒 阅读时间:6 分钟 📝 字数:2171 👀 阅读量: Loading...

:::tip

本页面含有AI生成内容

感谢Copilot的美化排版与样式

:::

计算机组成原理第二章 - 定点数与浮点数

📚 基础知识回顾

1. 🔄 数的进制转换

1.1 十进制转其他进制

🎯 核心方法:

  • 整数部分:除基数取余法
  • 小数部分:乘基数取整法

📝 十进制转二进制(整数)

方法:除 2 取余法,余数倒序排列

示例(42)10→(?)2(42)_{10} \rightarrow (?)_2

42÷2=21⋯021÷2=10⋯110÷2=5⋯05÷2=2⋯12÷2=1⋯01÷2=0⋯1\begin{aligned} 42 \div 2 &= 21 \cdots 0\\ 21 \div 2 &= 10 \cdots 1\\ 10 \div 2 &= 5 \cdots 0\\ 5 \div 2 &= 2 \cdots 1\\ 2 \div 2 &= 1 \cdots 0\\ 1 \div 2 &= 0 \cdots 1 \end{aligned}

✅ 结果: (42)10=(101010)2(42)_{10} = (101010)_2

📝 十进制转十六进制

示例(255)10→(?)16(255)_{10} \rightarrow (?)_{16}

255÷16=15⋯15(F)15÷16=0⋯15(F)\begin{aligned} 255 \div 16 &= 15 \cdots 15_{(F)}\\ 15 \div 16 &= 0 \cdots 15_{(F)} \end{aligned}

✅ 结果: (255)10=(FF)16(255)_{10} = (FF)_{16}

1.2 其他进制转十进制

🎯 核心公式:

N=∑i=−mndi×riN = \sum_{i=-m}^{n} d_i \times r^i

其中:rr 为基数,did_i 为各位数字,ii 为权值

📝 示例1: (1011.01)2→(?)10(1011.01)_2 \rightarrow (?)_{10}

=1×23+0×22+1×21+1×20+0×2−1+1×2−2=8+0+2+1+0+0.25=(11.25)10\begin{aligned} &= 1 \times 2^3 + 0 \times 2^2 + 1 \times 2^1 + 1 \times 2^0 + 0 \times 2^{-1} + 1 \times 2^{-2}\\ &= 8 + 0 + 2 + 1 + 0 + 0.25\\ &= (11.25)_{10} \end{aligned}

📝 示例2: (2A.F)16→(?)10(2A.F)_{16} \rightarrow (?)_{10}

=2×161+10×160+15×16−1=32+10+0.9375=(42.9375)10\begin{aligned} &= 2 \times 16^1 + 10 \times 16^0 + 15 \times 16^{-1}\\ &= 32 + 10 + 0.9375\\ &= (42.9375)_{10} \end{aligned}

1.3 小数转换详解

📝 示例: (13.625)10→(?)2(13.625)_{10} \rightarrow (?)_2

整数部分: 1310=1101213_{10} = 1101_2

小数部分(乘2取整法):

0.625×2=1.25取整:10.25×2=0.5取整:00.5×2=1.0取整:1\begin{aligned} 0.625 \times 2 &= 1.25 \quad \text{取整:} 1\\ 0.25 \times 2 &= 0.5 \quad \text{取整:} 0\\ 0.5 \times 2 &= 1.0 \quad \text{取整:} 1 \end{aligned}

✅ 结果: (13.625)10=(1101.101)2(13.625)_{10} = (1101.101)_2

2. 🔢 负数表示方法

2.1 原码、反码、补码对比

编码方式正数负数0的表示运算特点
原码符号位0 + 真值符号位1 + 真值+0, -0两种需要符号位单独处理
反码与原码相同符号位1 + 数值位取反+0, -0两种加法有特殊规则
补码与原码相同反码 + 1唯一0统一加减法运算

📝 示例(8位):

数值原码反码补码
+5000001010000010100000101
-5100001011111101011111011
+0000000000000000000000000
-0100000001111111100000000

2.2 补码的优势

⚡ 关键优势:

  1. 零的唯一表示
  2. 加减法运算统一
  3. 硬件实现简单
  4. 表数范围最大

📝 补码范围: nn 位补码表示范围为 [−2n−1,2n−1−1][-2^{n-1}, 2^{n-1}-1]


🎯 定点数表示

1. 📖 定点数基础概念

1.1 定义与分类

🔑 定点数: 小数点位置固定的数值表示方法

类型定义示例应用场景
定点整数小数点在末尾1012=510101_2 = 5_{10}整数运算
定点小数小数点在首位后0.10012=0.5625100.1001_2 = 0.5625_{10}精密计算

💾 存储格式: 符号位(1位) + 数值位(n位) = 总长度 n+1n+1

1.2 关键特性对比

特性定点数浮点数
📊 表示范围有限,易溢出极大范围
🎯 精度固定精度动态精度
运算速度相对较慢
🔧 硬件复杂度简单复杂
🔋 功耗

2. 📊 定点数表示范围

2.1 定点小数(纯小数)

📋 范围对比表:

编码类型最大正数最小正数最大负数数据范围
原码0.111⋯10.111\cdots1
(1−2−n)(1-2^{-n})
0.000⋯10.000\cdots1
(2−n)(2^{-n})
−0.111⋯1-0.111\cdots1
(−1+2−n)(-1+2^{-n})
−(1−2−n)≤X≤(1−2−n)-(1-2^{-n}) \leq X \leq (1-2^{-n})
补码0.111⋯10.111\cdots1
(1−2−n)(1-2^{-n})
0.000⋯10.000\cdots1
(2−n)(2^{-n})
−1.000⋯0-1.000\cdots0
(−1)(-1)
−1≤X≤(1−2−n)-1 \leq X \leq (1-2^{-n})

📝 示例(8位定点小数,n=7n=7):

  • 补码范围: [−1.0000000,+0.1111111][-1.0000000, +0.1111111][−1,0.9921875][-1, 0.9921875]

2.2 定点整数(纯整数)

📋 范围对比表:

编码类型最大正数最小负数数据范围
原码0111⋯10111\cdots1
(2n−1−1)(2^{n-1}-1)
1111⋯11111\cdots1
(−(2n−1−1))(-(2^{n-1}-1))
−(2n−1−1)≤X≤(2n−1−1)-(2^{n-1}-1) \leq X \leq (2^{n-1}-1)
补码0111⋯10111\cdots1
(2n−1−1)(2^{n-1}-1)
1000⋯01000\cdots0
(−2n−1)(-2^{n-1})
−2n−1≤X≤(2n−1−1)-2^{n-1} \leq X \leq (2^{n-1}-1)

📝 示例(8位定点整数,n=7n=7):

  • 补码范围: [−128,+127][-128, +127]

3. 🔄 数制转换详解

3.1 十进制 → 二进制定点数

🎯 定点小数转换步骤:

📝 示例: 0.62510→80.625_{10} \rightarrow 8位定点小数

0.625×2=1.25取整:1,余:0.250.25×2=0.5取整:0,余:0.50.5×2=1.0取整:1,余:0\begin{aligned} 0.625 \times 2 &= 1.25 \quad \text{取整:} 1, \text{余:} 0.25\\ 0.25 \times 2 &= 0.5 \quad \text{取整:} 0, \text{余:} 0.5\\ 0.5 \times 2 &= 1.0 \quad \text{取整:} 1, \text{余:} 0 \end{aligned}

✅ 结果: 0.62510=0.1012=0 1010000补0.625_{10} = 0.101_2 = 0\,1010000_{\text{补}}

🎯 定点整数转换:

📝 示例: 510→85_{10} \rightarrow 8位定点整数

步骤: 510=1012→0 0000101补5_{10} = 101_2 \rightarrow 0\,0000101_{\text{补}}

3.2 二进制定点数 → 十进制

🎯 定点小数转换公式:

X=∑i=1nbi×2−iX = \sum_{i=1}^{n} b_i \times 2^{-i}

📝 示例: 1 0110000补1\,0110000_{\text{补}} → 十进制

步骤:

  1. 符号位为1,表示负数
  2. 数值位:01100000110000
  3. 按权展开:0×2−1+1×2−2+1×2−3+0+⋯=0.25+0.125=0.3750 \times 2^{-1} + 1 \times 2^{-2} + 1 \times 2^{-3} + 0 + \cdots = 0.25 + 0.125 = 0.375
  4. 补码转换:先减1得反码 1 00011111\,0001111,再取反得原码 1 11100001\,1110000
  5. 结果: −0.875-0.875

🎯 定点整数转换公式:

X=∑i=0n−1bi×2iX = \sum_{i=0}^{n-1} b_i \times 2^{i}

3.3 编码转换规则

🔄 原码 ↔ 补码:

转换方向正数负数
原码→补码不变数值位取反+1
补码→原码不变减1后数值位取反

📝 示例: −5-5 的编码转换(8位)

原码:1 0000101反码:1 1111010补码:1 1111011\begin{aligned} \text{原码:} &\quad 1\,0000101\\ \text{反码:} &\quad 1\,1111010\\ \text{补码:} &\quad 1\,1111011 \end{aligned}

4. ⚡ 定点数运算

4.1 补码加减法

🎯 运算规则:

[A±B]补=[A]补±[B]补[A \pm B]_{\text{补}} = [A]_{\text{补}} \pm [B]_{\text{补}}

📝 示例: (−5)+3(-5) + 3(8位)

−5:1 1111011+3:0 0000011和:1 1111110=−2\begin{aligned} -5: &\quad 1\,1111011\\ +3: &\quad 0\,0000011\\ \hline \text{和}: &\quad 1\,1111110 = -2 \end{aligned}

4.2 溢出检测

⚠️ 溢出判断方法:

  1. 进位标志法: V=Cn−1⊕CnV = C_{n-1} \oplus C_n
  2. 符号检测法: 同号相加结果异号

📝 溢出示例: 127+1127 + 1(8位补码)

127:0 1111111+1:0 0000001和:1 0000000=−128(溢出)\begin{aligned} 127: &\quad 0\,1111111\\ +1: &\quad 0\,0000001\\ \hline \text{和}: &\quad 1\,0000000 = -128 \quad \text{(溢出)} \end{aligned}

检测: C6=1,C7=0⇒C6⊕C7=1C_6 = 1, C_7 = 0 \Rightarrow C_6 \oplus C_7 = 1 → 溢出

5. 💼 定点数应用场景

应用领域特点典型应用
🤖 嵌入式系统低功耗、实时性高传感器处理、控制系统
🎵 数字信号处理高精度、低延迟FFT算法、数字滤波器
💰 金融计算避免浮点误差货币计算、利息计算
🎮 图形处理并行计算友好像素处理、坐标变换

🌊 浮点数表示

1. 🔬 浮点数核心概念

1.1 通用表示形式

🎯 浮点数公式:

N=(−1)S×M×REN = (-1)^S \times M \times R^E

参数说明:

  • SS符号位(0=正,1=负)
  • MM尾数(有效数字)
  • EE阶码(指数)
  • RR基数(通常为2)

1.2 IEEE 754标准

📋 单精度(32位)格式:

字段位数范围计算规则
符号位 SS1位0或10=正数,1=负数
阶码 EE8位0-255实际指数 = E−127E - 127
尾数 MM23位0-8388607实际尾数 = 1.M1.M(规格化)

📋 双精度(64位)格式:

字段位数偏移量
符号位 SS1位-
阶码 EE11位1023
尾数 MM52位-

📝 转换示例: −0.7510-0.75_{10} → IEEE 754单精度

步骤:

  1. −0.7510=−0.112=−1.12×2−1-0.75_{10} = -0.11_2 = -1.1_2 \times 2^{-1}
  2. S=1S = 1(负数)
  3. E=126E = 126127−1127 - 1
  4. M=10000000000000000000000M = 10000000000000000000000

✅ 结果: 1 01111110 10000000000000000000000

2. 📏 浮点数规格化

2.1 规格化条件

🎯 规格化要求:

1R≤∣M∣<1(二进制:0.5≤∣M∣<1)\frac{1}{R} \leq |M| < 1 \quad \text{(二进制:} 0.5 \leq |M| < 1\text{)}

📋 补码尾数规格化形式:

数值类型规格化形式示例
正数0.1xxx⋯x0.1xxx\cdots x0.11010000.1101000
负数1.0xxx⋯x1.0xxx\cdots x1.00110001.0011000

2.2 规格化判断表

二进制补码是否规格化说明
0.0011010×200100.0011010 \times 2^{0010}尾数首位非1
0.1101000×200000.1101000 \times 2^{0000}满足 0.5≤M<10.5 \leq M < 1
1.1100110×200101.1100110 \times 2^{0010}负数应为1.0xxx1.0xxx形式
1.0011000×200001.0011000 \times 2^{0000}满足 −1≤M<−0.5-1 \leq M < -0.5

3. 📈 浮点数表示范围

3.1 IEEE 754单精度范围

数值类型表示范围十进制近似
最大规格化正数(2−2−23)×2127(2-2^{-23}) \times 2^{127}≈3.4×1038\approx 3.4 \times 10^{38}
最小规格化正数1.0×2−1261.0 \times 2^{-126}≈1.18×10−38\approx 1.18 \times 10^{-38}
最大非规格化数(1−2−23)×2−126(1-2^{-23}) \times 2^{-126}≈1.18×10−38\approx 1.18 \times 10^{-38}
最小非规格化数2−23×2−1262^{-23} \times 2^{-126}≈1.4×10−45\approx 1.4 \times 10^{-45}

3.2 溢出处理

情况结果表示
上溢±∞\pm\infty阶码全1,尾数全0
下溢非规格化数或0阶码全0

4. 🔢 阶码与移码

4.1 移码定义

🎯 移码公式:

[X]移=2n+X(−2n≤X≤2n−1)[X]_{\text{移}} = 2^n + X \quad (-2^n \leq X \leq 2^n-1)

💡 移码特性:

  • 零的移码为 10⋯010\cdots0
  • 真值与移码单调递增
  • 便于大小比较

4.2 移码对照表

📋 8位移码示例(n=7n=7,偏移量=128):

真值补码移码十进制值
-12810000000000000000
-12710000001000000011
-11111111101111111127
00000000010000000128
10000000110000001129
1270111111111111111255

5. ⚙️ 浮点数运算

5.1 加减运算流程

graph LR
    A[🔄 对阶] --> B[➕ 尾数加减]
    B --> C[📏 规格化]
    C --> D[🔄 舍入]
    D --> E[⚠️ 溢出判断]

    style A fill:#e1f5fe
    style B fill:#f3e5f5
    style C fill:#e8f5e8
    style D fill:#fff3e0
    style E fill:#ffebee

5.2 运算步骤详解

🔄 步骤1:对阶(小阶向大阶看齐)

📝 示例: X=23×0.1101X=2^3 \times 0.1101Y=25×0.1010Y=2^5 \times 0.1010

  • 阶差:5−3=25-3=2
  • X尾数右移2位:X′=25×0.001101X' = 2^5 \times 0.001101

➕ 步骤2:尾数加减

[MX]补+[MY]补=00.001101+11.0110=11.100101[M_X]_{\text{补}} + [M_Y]_{\text{补}} = 00.001101 + 11.0110 = 11.100101

📏 步骤3:规格化

  • 结果:11.10010111.100101 → 左规1位 → 11.00101011.001010(阶码-1)

🔄 步骤4:舍入

  • 0舍1入:11.001010→11.0010111.001010 \rightarrow 11.00101

⚠️ 步骤5:溢出判断

  • 检查阶码是否超出范围

5.3 典型运算示例

📝 题目: X=27×2932X=2^7 \times \frac{29}{32}Y=25×58Y=2^5 \times \frac{5}{8},求X+YX+Y

条件: 阶码5位,尾数7位(含符号位)

解答过程:

  1. 对阶:

    • [X]补=00111 00.11101[X]_{\text{补}} = 00111\,00.11101
    • [Y]补=00111 00.0010100[Y]_{\text{补}} = 00111\,00.0010100
  2. 尾数运算:

    • 00.11101+00.00101=01.0001000.11101 + 00.00101 = 01.00010 → 尾数溢出
  3. 右规处理:

    • 尾数:00.1000100.10001,阶码+1 → 01000 00.1000101000\,00.10001
  4. 溢出判断:

    • 阶码0100001000超出5位最大值0111101111上溢

6. 🚨 浮点数特殊值

📋 IEEE 754特殊值编码:

阶码E尾数M含义示例
全0全0±0\pm 00 00000000 000...000
全0非全0非规格化数0 00000000 000...001
全1全0±∞\pm \infty0 11111111 000...000
全1非全0NaN0 11111111 000...001

7. ⚠️ 浮点数运算误差

7.1 误差来源

误差类型产生原因影响
对阶误差尾数右移丢失低位精度损失
舍入误差位数限制近似累积误差
运算误差多次操作叠加结果偏差

7.2 误差控制方法

  • 🎯 双精度运算: 提高尾数精度
  • 📊 误差分析: 估算精度损失
  • 🔧 特殊算法: Kahan求和等

📝 精度损失示例:

1.0+2−24=1.0+0.0000000596⋯≈1.0(单精度丢失)1.0 + 2^{-24} = 1.0 + 0.0000000596\cdots \approx 1.0 \quad \text{(单精度丢失)}


📝 重要公式总结

🎯 核心公式速查

| 类别 | 公式 | 说明 | | -------------------- | ------------------------------------------------ | ---------------- | ---- | ------------ | | 进制转换 | N=∑i=−mndi×riN = \sum_{i=-m}^{n} d_i \times r^i | 任意进制转十进制 | | 浮点数 | N=(−1)S×M×2E−偏移量N = (-1)^S \times M \times 2^{E-\text{偏移量}} | IEEE 754标准 | | 补码范围 | [−2n−1,2n−1−1][-2^{n-1}, 2^{n-1}-1] | n位补码表示范围 | | 定点小数(原码) | [−(1−2−n),(1−2−n)][-(1-2^{-n}), (1-2^{-n})] | 原码小数范围 | | 定点小数(补码) | [−1,(1−2−n)][-1, (1-2^{-n})] | 补码小数范围 | | 定点整数(补码) | [−2n−1,2n−1−1][-2^{n-1}, 2^{n-1}-1] | 补码整数范围 | | 溢出检测 | V=Cn−1⊕CnV = C_{n-1} \oplus C_n | 补码溢出判断 | | 移码转换 | [X]移=2n+X[X]_{\text{移}} = 2^n + X | 移码公式 | | 规格化条件 | 0.5≤∣M∣<10.5 \leq | M | < 1 | 二进制规格化 |

🔍 重要常数

标准偏移量表示范围
IEEE 754单精度127±3.4×1038\pm 3.4 \times 10^{38}
IEEE 754双精度1023±1.8×10308\pm 1.8 \times 10^{308}

📚 复习要点

重点掌握

  1. 🔄 进制转换: 熟练掌握各种进制间的转换方法
  2. ⚡ 补码运算: 理解补码的优势和运算规则
  3. 📏 定点数范围: 记住不同编码的表示范围
  4. 🌊 浮点数格式: 掌握IEEE 754标准格式
  5. ⚙️ 浮点运算: 理解五步运算流程
  6. ⚠️ 溢出检测: 掌握各种溢出判断方法

🎯 常考题型

  • 进制转换计算
  • 原码/反码/补码互转
  • 定点数运算与溢出判断
  • IEEE 754格式转换
  • 浮点数加减运算
  • 特殊值识别

💡 记忆技巧

  • 补码优势: “统一运算,唯一零值”
  • 浮点运算: “对阶→加减→规格→舍入→溢出”
  • IEEE 754: “1+8+23=32位单精度,1+11+52=64位双精度”