


























🕒 阅读时间:6 分钟 📝 字数:2171 👀 阅读量: Loading...
:::tip
本页面含有AI生成内容
感谢Copilot的美化排版与样式
:::
🎯 核心方法:
📝 十进制转二进制(整数)
方法:除 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}
🎯 核心公式:
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}
📝 示例: (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
| 编码方式 | 正数 | 负数 | 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 |
⚡ 关键优势:
- 零的唯一表示
- 加减法运算统一
- 硬件实现简单
- 表数范围最大
📝 补码范围: nn 位补码表示范围为 [−2n−1,2n−1−1][-2^{n-1}, 2^{n-1}-1]
🔑 定点数: 小数点位置固定的数值表示方法
| 类型 | 定义 | 示例 | 应用场景 |
|---|---|---|---|
| 定点整数 | 小数点在末尾 | 1012=510101_2 = 5_{10} | 整数运算 |
| 定点小数 | 小数点在首位后 | 0.10012=0.5625100.1001_2 = 0.5625_{10} | 精密计算 |
💾 存储格式: 符号位(1位) + 数值位(n位) = 总长度 n+1n+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):
📋 范围对比表:
| 编码类型 | 最大正数 | 最小负数 | 数据范围 |
|---|---|---|---|
| 原码 | 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):
🎯 定点小数转换步骤:
📝 示例: 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{补}}
🎯 定点小数转换公式:
X=∑i=1nbi×2−iX = \sum_{i=1}^{n} b_i \times 2^{-i}
📝 示例: 1 0110000补1\,0110000_{\text{补}} → 十进制
步骤:
🎯 定点整数转换公式:
X=∑i=0n−1bi×2iX = \sum_{i=0}^{n-1} b_i \times 2^{i}
🔄 原码 ↔ 补码:
| 转换方向 | 正数 | 负数 |
|---|---|---|
| 原码→补码 | 不变 | 数值位取反+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}
🎯 运算规则:
[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}
⚠️ 溢出判断方法:
📝 溢出示例: 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 → 溢出
| 应用领域 | 特点 | 典型应用 |
|---|---|---|
| 🤖 嵌入式系统 | 低功耗、实时性高 | 传感器处理、控制系统 |
| 🎵 数字信号处理 | 高精度、低延迟 | FFT算法、数字滤波器 |
| 💰 金融计算 | 避免浮点误差 | 货币计算、利息计算 |
| 🎮 图形处理 | 并行计算友好 | 像素处理、坐标变换 |
🎯 浮点数公式:
N=(−1)S×M×REN = (-1)^S \times M \times R^E
参数说明:
📋 单精度(32位)格式:
| 字段 | 位数 | 范围 | 计算规则 |
|---|---|---|---|
| 符号位 SS | 1位 | 0或1 | 0=正数,1=负数 |
| 阶码 EE | 8位 | 0-255 | 实际指数 = E−127E - 127 |
| 尾数 MM | 23位 | 0-8388607 | 实际尾数 = 1.M1.M(规格化) |
📋 双精度(64位)格式:
| 字段 | 位数 | 偏移量 |
|---|---|---|
| 符号位 SS | 1位 | - |
| 阶码 EE | 11位 | 1023 |
| 尾数 MM | 52位 | - |
📝 转换示例: −0.7510-0.75_{10} → IEEE 754单精度
步骤:
✅ 结果: 1 01111110 10000000000000000000000
🎯 规格化要求:
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 x | 0.11010000.1101000 |
| 负数 | 1.0xxx⋯x1.0xxx\cdots x | 1.00110001.0011000 |
| 二进制补码 | 是否规格化 | 说明 |
|---|---|---|
| 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 |
| 数值类型 | 表示范围 | 十进制近似 |
|---|---|---|
| 最大规格化正数 | (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} |
| 情况 | 结果 | 表示 |
|---|---|---|
| 上溢 | ±∞\pm\infty | 阶码全1,尾数全0 |
| 下溢 | 非规格化数或0 | 阶码全0 |
🎯 移码公式:
[X]移=2n+X(−2n≤X≤2n−1)[X]_{\text{移}} = 2^n + X \quad (-2^n \leq X \leq 2^n-1)
💡 移码特性:
📋 8位移码示例(n=7n=7,偏移量=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 |
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
🔄 步骤1:对阶(小阶向大阶看齐)
📝 示例: X=23×0.1101X=2^3 \times 0.1101,Y=25×0.1010Y=2^5 \times 0.1010
➕ 步骤2:尾数加减
[MX]补+[MY]补=00.001101+11.0110=11.100101[M_X]_{\text{补}} + [M_Y]_{\text{补}} = 00.001101 + 11.0110 = 11.100101
📏 步骤3:规格化
🔄 步骤4:舍入
⚠️ 步骤5:溢出判断
📝 题目: X=27×2932X=2^7 \times \frac{29}{32},Y=25×58Y=2^5 \times \frac{5}{8},求X+YX+Y
条件: 阶码5位,尾数7位(含符号位)
解答过程:
对阶:
尾数运算:
右规处理:
溢出判断:
📋 IEEE 754特殊值编码:
| 阶码E | 尾数M | 含义 | 示例 |
|---|---|---|---|
| 全0 | 全0 | ±0\pm 0 | 0 00000000 000...000 |
| 全0 | 非全0 | 非规格化数 | 0 00000000 000...001 |
| 全1 | 全0 | ±∞\pm \infty | 0 11111111 000...000 |
| 全1 | 非全0 | NaN | 0 11111111 000...001 |
| 误差类型 | 产生原因 | 影响 |
|---|---|---|
| 对阶误差 | 尾数右移丢失低位 | 精度损失 |
| 舍入误差 | 位数限制近似 | 累积误差 |
| 运算误差 | 多次操作叠加 | 结果偏差 |
📝 精度损失示例:
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} |
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。