数制
计算机二进制系统知识结构总结
一、数制
-
基本定义
- 二进制:基数为2,符号集为{0,1},权值为2的幂次(如
101.11₂ = 1×2² + 0×2¹ + 1×2⁰ + 1×2⁻¹ + 1×2⁻²
)。 - 八进制:基数为8,符号集为{0-7},权值为8的幂次。
- 十六进制:基数为16,符号集为{0-9, A-F},权值为16的幂次。
- 十进制:基数为10,符号集为{0-9},权值为10的幂次。
- 二进制:基数为2,符号集为{0,1},权值为2的幂次(如
-
权值表示示例
- 十进制数
123.12
:- 整数部分:
1×10² + 2×10¹ + 3×10⁰
- 小数部分:
1×10⁻¹ + 2×10⁻²
- 整数部分:
- 二进制数
101.11
:- 整数部分:
1×2² + 0×2¹ + 1×2⁰
- 小数部分:
1×2⁻¹ + 1×2⁻²
- 整数部分:
- 十进制数
二、数制之间的相互转换
-
二进制 ↔ 十进制
- 转十进制:按权展开求和(如
1011.101₂ = 11.625₁₀
)。 - 转二进制:
- 整数部分:除2取余,逆序排列(如
13 → 1101
)。 - 小数部分:乘2取整,顺序排列(如
0.625 → 0.101
)。
- 整数部分:除2取余,逆序排列(如
- 转十进制:按权展开求和(如
-
二进制 ↔ 八进制/十六进制
- 转八进制:三位一组分组,每组转八进制(如
110101₂ → 65₈
)。 - 转十六进制:四位一组分组,每组转十六进制(如
1010111101₂ → 2BD₁₆
)。 - 逆向转换:每位八/十六进制数展开为3/4位二进制(如
347₈ → 11100111₂
)。
- 转八进制:三位一组分组,每组转八进制(如
三、计算机整数存储:原码、反码、补码系统
-
编码系统对比
特性 原码 反码 补码 符号位 最高位(0正,1负) 同原码 同原码 数值范围 -7~+7(4位) -7~+7(4位) -8~+7(4位) 模数 无 \(2^n -1\) \(2^n\) ±0问题 存在±0(冗余) 存在±0(冗余) 唯一零 硬件复杂度 高(需加减法器) 中(需循环进位) 低(仅需加法器) -
模运算核心
- 补码设计:基于模\(2^n\),将减法统一为加法(如
-3 ≡ 5 mod 8
,故3 - 5 ≡ 3 + 3 = 6 ≡ -2 mod 8
)。 - 反码缺陷:模\(2^n -1\)导致溢出需手动+1修正(如
3 + 1 = 4 → 硬件截断为0,修正后为1
)。 - 补码优势:溢出直接截断即正确(如
3 + 1 = 4 ≡ -4 mod 8
,硬件结果100
表示-4)。
- 补码设计:基于模\(2^n\),将减法统一为加法(如
四、计算机浮点数存储:IEEE 754标准(32位单精度)
-
结构组成
部分 位数 说明 符号位 1位 0
正数,1
负数。指数 8位 移码(Excess-127),实际指数 = E - 127。 尾数 23位 隐含最高位 1
(规格化数)或0
(非规格化数)。 -
规格化数
- 条件:指数非全0/全1(\(1 ≤ E ≤ 254\))。
- 公式:\((-1)^S × 1.M₂ × 2^{E-127}\)。
- 范围:\(≈1.175×10^{-38} \text{~} 3.4×10^{38}\)。
-
非规格化数
- 条件:指数全0(\(E=0\))。
- 公式:\((-1)^S × 0.M₂ × 2^{-126}\)。
- 作用:填补接近零的数值间隙(最小正数≈\(1.4×10^{-45}\))。
-
特殊值
- ±0:指数和尾数全0。
- ±∞:指数全1且尾数全0(如
1.0/0.0
)。 - NaN:指数全1且尾数非0(如
0/0
)。
-
移码(Excess-127)逻辑
- 偏移目的:将指数范围从
-126~+127
映射为无符号数1~254
,避免负数存储。 - 比较优势:直接对比存储值即可判断指数大小(如
130 > 120
对应实际指数3 > -7
)。
- 偏移目的:将指数范围从
总结
- 数制:二进制为核心,八/十六进制为便捷分组表示。
- 转换:权值展开与分组法是核心,适用于整数与小数部分的灵活转换,并支持高效的多进制互操作。
- 整数存储:补码通过模\(2^n\)消除冗余,统一运算逻辑,成为现代标准。
- 浮点存储:IEEE 754通过移码、隐含位和非规格化数,平衡精度与范围,支持科学计算需求。