1.1 数制与编码
一、数制定义
- 数制(进位制):用有限的符号按 “位值” 与 “基数” 表示数值的系统。
- 基数 r:每一位可取的符号个数。
- 位权:第 k 位权重 = rᵏ(k 从 0 开始)。
二、四种常见数制
| 进制 | 基数 | 符号 | 前缀 / 后缀 | 典型场景 |
|---|---|---|---|---|
| 二进制 | 2 | 0, 1 | 0b / % | 数字逻辑、机器码 |
| 八进制 | 8 | 0–7 | 0o | Unix 权限、早期体系结构 |
| 十进制 | 10 | 0–9 | 无 | 人类日常、金融 |
| 十六进制 | 16 | 0–9, A–F | 0x | 内存地址、颜色代码 |
三、进制转换方法
3.1 任意进制 → 十进制
公式:
d(digit):每一位上的 “数字” 本身。
r(radix):进制(或叫 “基数”)。
示例: 0x1A3 = 1×16² + 10×16¹ + 3×16⁰ = 419₁₀
通用性: 事实上,该公式对于小数点后的数字也通用,只是将
的指数变为负数
3.2 十进制 → 任意进制

图一:十进制转二进制示意图 整数部分:除基取余(逆序)
小数部分:乘基取整(顺序)
示例:
100₁₀ → 二进制100 ÷ 2 = 50 余 0
50 ÷ 2 = 25 余 0
25 ÷ 2 = 12 余 1
12 ÷ 2 = 6 余 0
6 ÷ 2 = 3 余 0
3 ÷ 2 = 1 余 1
1 ÷ 2 = 0 余 1从下往上读余数 → 0b1100100
3.3 2 ↔ 8 ↔ 16 快速互换
| 源进制 | 目标进制 | 分组规则 | 示例 |
|---|---|---|---|
| 2 → 8 | 每 3 位 | 0b101 001 101 = 0o515 | |
| 2 → 16 | 每 4 位 | 0b1010 0110 = 0xA6 | |
| 8 → 2 | 1 位变 3 位 | 0o17 = 0b001 111 | |
| 16 → 2 | 1 位变 4 位 | 0xF = 0b1111 |
3.4 有意思的补充
其实数制的基数不仅可以是整数,还可以是负数甚至无理数 负数进制很简单,符合上述进制转换公式
3.4.1 更神奇的数制系统 - 斐波那契及黄金分割进制
- 斐波那契数制系统 所有的斐波那契数列能组成一个数组 Fib = {1,2,3,5,8,13,21,34,...} 斐波那契数制系统中只存在两种 digit: 0 和 1 所以向转换十进制的公式为:
- 特性 由于数组中
因此任何一位上的 1 都可以等效替代为.11 eg: 不过习惯上完整表达一个数时,必须将 11 替换为下一位的 1 - 黄金分割进制 ——Bergman 进制 非常少见的一种进制 完全符合上述斐波那契进制的特性 但其使用黄金比 φ 作为基数 因此也适合用来表示无理数
四、速查表
| 十进制 | 二进制 | 八进制 | 十六进制 |
|---|---|---|---|
| 0 | 0 | 0o0 | 0x0 |
| 7 | 111 | 0o7 | 0x7 |
| 15 | 1111 | 0o17 | 0xF |
| 255 | 11111111 | 0o377 | 0xFF |
五、典型应用
- IPv4 地址:点分十进制
192.168.0.1 - IPv6 地址:冒分十六进制
2001:0db8::1 - 颜色代码:
#RRGGBB如#FF0000红色 - Unix 权限:
rwxr-xr-x→ 二进制 111 101 101 → 八进制0o755 - 调试器 / 反汇编:查看内存
0x004005B0处的机器码48 89 e5…(十六进制字节)
六、延伸阅读
- BCD 码、格雷码、IEEE-754 浮点
- 位运算:AND、OR、XOR、Shift 与掩码技术
- 字符编码:ASCII(7 位)、UTF-8(可变字节)、Base64(6 位→可打印)
七、编码与数制的关系
- 编码:把 “信息→数值→二进制” 的二次映射,需兼顾人类可读性与机器高效性。
- 数制决定符号集与位权;编码决定符号排列规则与检错 / 容错特性。
7.1 BCD 码(Binary-Coded Decimal)
| 项目 | 说明 |
|---|---|
| 定义 | 每 1 位十进制数用 4 位二进制(即 1 个十六进制位)独立表示。 |
| 权值 | 8-4-2-1(纯二进制权),又称 8421-BCD。 |
| 示例 | 59₁₀ → 0101 1001(BCD),而非 0011 1011₂。 |
| 与十六进制区别 | 十六进制用满 4 位 0–F;BCD 仅使用 0–9,冗余 6 个状态(A–F)。 |
| 压缩 BCD | 每字节存 2 位十进制,高 4 位 + 低 4 位。 |
| 优点 | 直接与人读十进制对齐,便于显示 / 键盘输入。 |
| 缺点 | 冗余、运算需 “加 6 校正” → 效率低。 |
| 典型应用 | 早期计算器、数字仪表、金融终端、ISO-8583 报文。 |
7.2 格雷码(Gray Code)
![]() |
|---|
| 图二:格雷码示意图 |
| 项目 | 说明 |
|---|---|
| 定义 | 相邻两个数仅 1 位 变化;是一种 无权码(位权不固定)。 |
| 二进制→格雷 | 最高位保留,其余位: G[i] = B[i] XOR B[i+1] ,XOR 的意思是异或 |
| 格雷→二进制 | B[i] = G[i] XOR B[i+1] (从最高位向下递推) |
| 示例 | 3 位格雷码序列:000→001→011→010→110→111→101→100 |
| 与数制关系 | 仍用二进制符号,但 重新排列顺序 以消除多位同时翻转。 |
| 优点 | 消除瞬态毛刺,提高可靠性;旋转编码器一圈对应单比特跳变。 |
| 缺点 | 运算不便,需与二进制互转。 |
| 典型应用 | 旋转编码器、ADC 比较器、FIFO 指针跨时钟域、K-map 卡诺图。 |
八、小结:数制 ↔ 编码对照
| 操作 | 数制 | 编码 | 关注点 |
|---|---|---|---|
| 符号集 | 0–(r-1) | 0,1 重组 | 冗余 / 检错 |
| 位权 | 固定 rᵏ | 可固定(BCD)或无(格雷) | 运算 / 映射 |
| 人读性 | 十进制最友好 | BCD 直接映射十进制 | 显示 / 输入 |
| 机器性 | 二进制最简洁 | 格雷抗翻转 | 传感 / 同步 |
clh,
25.8.7
