进制转换是计算机中最基础的数据表示方法。计算机内部使用二进制,但人类习惯十进制,因此需要掌握各种进制之间的转换方法。BCD 码是用二进制编码表示十进制数的方式。
将每一位数字乘以其对应的权值(R 的幂次),然后求和。
$$1011.1_2 = 1 \times 2^3 + 0 \times 2^2 + 1 \times 2^1 + 1 \times 2^0 + 1 \times 2^{-1} = 8 + 0 + 2 + 1 + 0.5 = 11.5_{10}$$
$$725.3_8 = 7 \times 8^2 + 2 \times 8^1 + 5 \times 8^0 + 3 \times 8^{-1} = 448 + 16 + 5 + 0.375 = 469.375_{10}$$
$$2AF.4_{16} = 2 \times 16^2 + A \times 16^1 + F \times 16^0 + 4 \times 16^{-1} = 512 + 160 + 15 + 0.25 = 687.25_{10}$$
$157_{10}$ 转二进制(余数自下而上倒序读取):
1. 157 ÷ 2 = 78 … 1 2. 78 ÷ 2 = 39 … 0 3. 39 ÷ 2 = 19 … 1 4. 19 ÷ 2 = 9 … 1 5. 9 ÷ 2 = 4 … 1 6. 4 ÷ 2 = 2 … 0 7. 2 ÷ 2 = 1 … 0 8. 1 ÷ 2 = 0 … 1 结果:10011101₂
$0.6875_{10}$ 转二进制(整数部分自上而下顺序读取):
1. 0.6875 × 2 = 1.375 → 1 2. 0.375 × 2 = 0.75 → 0 3. 0.75 × 2 = 1.5 → 1 4. 0.5 × 2 = 1.0 → 1 结果:0.1011₂
10 011 101.101₂ 2 3 5 . 5 → 235.5₈
1001 1101.1010₂ 9 D . A → 9D.A₁₆
技巧:这是计算机中常用的快速转换方法。
BCD(Binary Coded Decimal)码用 4 位二进制数编码 1 位十进制数(0-9)。
| 十进制 | 8421码 | 十进制 | 8421码 |
|---|---|---|---|
| 0 | 0000 | 5 | 0101 |
| 1 | 0001 | 6 | 0110 |
| 2 | 0010 | 7 | 0111 |
| 3 | 0011 | 8 | 1000 |
| 4 | 0100 | 9 | 1001 |
例:3 + 5 = 8 例:8 + 7 = 15
0011 1000
+ 0101 + 0111
------ ------
1000 → 8 无需修正 1111 → 15 > 9,需修正
+ 0110 → 加6修正
------
1 0101 → 进位1 + 0101 = 15 ✓
| 十进制 | 8421码 | 余3码 | 十进制 | 8421码 | 余3码 |
|---|---|---|---|---|---|
| 0 | 0000 | 0011 | 5 | 0101 | 1000 |
| 1 | 0001 | 0100 | 6 | 0110 | 1001 |
| 2 | 0010 | 0101 | 7 | 0111 | 1010 |
| 3 | 0011 | 0110 | 8 | 1000 | 1011 |
| 4 | 0100 | 0111 | 9 | 1001 | 1100 |
两个余3码相加,结果进位后需减 3 修正(加 1101,即 -3 的补码)。
| 十进制 | 2421码 | 十进制 | 2421码 |
|---|---|---|---|
| 0 | 0000 | 5 | 1011 |
| 1 | 0001 | 6 | 1100 |
| 2 | 0010 | 7 | 1101 |
| 3 | 0011 | 8 | 1110 |
| 4 | 0100 | 9 | 1111 |
| BCD码类型 | 有权/无权 | 自补码 | 特点 |
|---|---|---|---|
| 8421码 | 有权 | 否 | 最常用,加法需修正 |
| 余3码 | 无权 | 是 | 加减法方便 |
| 2421码 | 有权 | 是 | 编码不唯一 |
| 余3循环码 | 无权 | 是 | 相邻仅差 1 位 |
↑ 以上为站内 HTML 相对链接(纯网页可浏览);本页右上「在 Obsidian 中打开」跳回源笔记。