BCD 码
外观
(重定向自BCD)
| BCD | |
|---|---|
| 术语名称 | BCD |
| 英语名称 | BCD |
| 别名 | 二进码十进数, 二进制编码的十进制, binary-coded decimal |
BCD[1] 是一种数字字符编码方式,将每一个十进制位通过 4 位二进制码编码。其字符集中通常仅含有 0~9 这 10 个数字,且被编码为 4 个二进制位。
本文是数字字符编码方式。关于借用这一名称的字符编码方案,即 BCD 交换码,见 BCDIC 。
BCD 码有多种不同变体,其中最常见的是 8421BCD 码。若从进位制记数法的角度看,采用 8421BCD 码的十进制数,本质上是构成了一种二进制-十进制混合进制,其各位位权序列为 [math]\displaystyle{ 1,2,4,8;10,20,40,80;100,200,400,800;\cdots }[/math] 。在不指定具体变体时, BCD 码默认指代 8421BCD 码。
具体编码
4 个二进制位共产生 16 个码位, BCD 码仅用其中的 10 个编码十进制数字 0~9 。
有权 BCD 码
此类编码的每个二进制位具有固定的位权,将各位上数字的数值与对应位权相乘后求和,即可直接得到该位的十进制值。
- 8421BCD 码/简单 BCD 码(Simple BCD, SBCD, BCD 8421):四位数字从左到右权值分别为 8、4、2、1 ,使用
0000-1001编码 0~9 ,而1010~1111是无效编码。这一编码与 0~9 的自然二进制表示完全一致。- 四位自然二进制码/自然 BCD 码(Natural BCD, NBCD):在 8421BCD 码的基础上允许码位
1010~1111正常表示 10~15 ,则属于数字的自然二进制码。
- 四位自然二进制码/自然 BCD 码(Natural BCD, NBCD):在 8421BCD 码的基础上允许码位
- 5421BCD 码:四位数字从左到右的权值为 5、4、2、1 。这种编码中同一个数字的编码不唯一,规范编码中 0~4 取最高位为 0 的编码,而 5~9 可由对应数字的编码加上最高位的 1 得到。其特点是最高位与其余三位分离,且 5~9 的编码和 0~4 的编码对应。
- 2421BCD 码:四位数字从左到右的权值为 2、4、2、1 。这种编码中同一个数字的编码不唯一,规范编码中 0~4 取最高位为 0 的编码,然后 5~9 为 4~0 的补。其特点是这种编码是一种自反码/对 9 互补码,即一个数按位取反后,恰好是其对 9 的补数。
无权 BCD 码
此类编码没有固定的位权,通常由某种变换得到。其中最常见的是偏移二进制码,对应自然二进制码基础上加减常数。
- 余 3 码(excess-3, XS-3, Stibitz code):加 3 的 8421 码,是一种自反码。余 3 码中每一位没有固定权重。如果对余 3 码的最后两位取反,可以会得到一种有权码,四位的权重分别为 8、4、-2、-1 。
- 余 6 码(excess-6, XS-6):加 6 的 8421 码。
压缩与非压缩
任意一种 BCD 码如果两个编码被打包在一个 8 位的字节内,称为压缩的;否则,每个数字处于每个字节的最后 4 位,称其为非压缩的。非压缩的编码中,最高 4 位通常为 0 。
数值对应
| 编码种类 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
|---|---|---|---|---|---|---|---|---|---|---|
| 8421BCD | 0000 | 0001 | 0010 | 0011 | 0100 | 0101 | 0110 | 0111 | 1000 | 1001 |
| NBCD | 0000 | 0001 | 0010 | 0011 | 0100 | 0101 | 0110 | 0111 | 1000 | 1001 |
| 5421BCD | 0000 | 0001 | 0010 | 0011 | 0100 | 1000 | 1001 | 1010 | 1011 | 1100 |
| 2421BCD | 0000 | 0001 | 0010 | 0011 | 0100 | 1011 | 1100 | 1101 | 1110 | 1111 |
| 余 3 码 | 0011 | 0100 | 0101 | 0110 | 0111 | 1000 | 1001 | 1010 | 1011 | 1100 |
| 余 6 码 | 0110 | 0111 | 1000 | 1001 | 1010 | 1011 | 1100 | 1101 | 1110 | 1111 |
| 编码种类 | 0000 | 0001 | 0010 | 0011 | 0100 | 0101 | 0110 | 0111 | 1000 | 1001 | 1010 | 1011 | 1100 | 1101 | 1110 | 1111 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 8421BCD | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 无效 | 无效 | 无效 | 无效 | 无效 | 无效 |
| NBCD | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 |
| 5421BCD | 0 | 1 | 2 | 3 | 4 | 无效 | 无效 | 无效 | 5 | 6 | 7 | 8 | 9 | 无效 | 无效 | 无效 |
| 2421BCD | 0 | 1 | 2 | 3 | 4 | 无效 | 无效 | 无效 | 无效 | 无效 | 无效 | 5 | 6 | 7 | 8 | 9 |
| 余 3 码 | 无效 | 无效 | 无效 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 无效 | 无效 | 无效 |
| 余 6 码 | 无效 | 无效 | 无效 | 无效 | 无效 | 无效 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
| 数的内部表示 | ||
|---|---|---|
| 十进制数的二进制编码 | BCD 码 、 Gray 码 、 奇偶校验码 、 字符表示 | - |
| 整数的机器数 | 定点整数:无符号定点整数、有符号定点整数 | 定点数(有符号:原码、反码、补码、移码) |
| 小数的机器数 | 定点小数 | |
| 浮点数(IEEE 754) | 浮点数 | |
| 记数系统 | ||||
|---|---|---|---|---|
| 位值制 记数法 |
进位制记数法/标准位值制记数法(进制) | 二进制、八进制、十进制、十六进制、…… | ||
| 非标准 位值制 记数法 |
符号数字 进位制记数法 |
平衡进位制记数法 (平衡进制) |
平衡三进制、…… | |
| 双射进位制记数法 (双射进制) |
双射十进制、双射二十六进制、…… | |||
| 位权是幂 但基数不是自然数 (非自然数进制) |
[math]\displaystyle{ -2 }[/math] 、 [math]\displaystyle{ -4 }[/math] 、…… | |||
| [math]\displaystyle{ \sqrt{2} }[/math] 、 [math]\displaystyle{ \sqrt{3} }[/math] 、 [math]\displaystyle{ \sqrt[12]{2} }[/math] 、…… | ||||
| [math]\displaystyle{ 2i }[/math] 、 [math]\displaystyle{ \sqrt[4]{2}i }[/math] 、 [math]\displaystyle{ 2\omega }[/math] 、 [math]\displaystyle{ \sqrt[3]{2}\omega }[/math] 、 [math]\displaystyle{ -1\pm i }[/math] 、…… | ||||
| 位权不是幂 | 存在基数 (混合进制) |
二五混合进制、阶乘进制、…… | ||
| 广义位值制记数法 | [math]\displaystyle{ p }[/math]-进数 | |||
| 质数记数法、…… | ||||
| 符值制记数法 | (双射)一进制、罗马记数法、希腊记数法、…… | |||
- ↑ 全称为 binary-coded decimal ,标准译为二进制编码的十进制或二-十进制编码,一般也称二进码十进数,全称只用于解释这个词语,通常使用中只使用缩写。