BCD码(Binary-Coded Decimal),用4位二进制数来表示1位十进制数中的0~9这10个数码,是一种二进制的数字编码形式,用二进制编码的十进制代码。BCD码这种编码形式利用了四个位元来储存一个十进制的数码,使二进制和十进制之间的转换得以快捷的进行。这种编码技巧最常用于会计系统的设计里,因为会计制度经常需要对很长的数字串作准确的计算。相对于一般的浮点式记数法,采用BCD码,既可保存数值的精确度,又可免去使计算机作浮点运算时所耗费的时间。此外,对于其他需要高精确度的计算,BCD编码亦很常用。
十进制 | 8位二进制 | 二进制低4位 | 压缩BCD码 | 非压缩BCD码 | BCD码对应的数字 |
0 | 00000000 | 0000 | 0000 | 0000 0000 | 0 |
1 | 00000001 | 0001 | 0001 | 0000 0001 | 1 |
2 | 00000010 | 0010 | 0010 | 0000 0010 | 2 |
3 | 00000011 | 0011 | 0011 | 0000 0011 | 3 |
4 | 00000100 | 0100 | 0100 | 0000 0100 | 4 |
5 | 00000101 | 0101 | 0101 | 0000 0101 | 5 |
6 | 00000110 | 0110 | 0110 | 0000 0110 | 6 |
7 | 00000111 | 0111 | 0111 | 0000 0111 | 7 |
8 | 00001000 | 1000 | 1000 | 0000 1000 | 8 |
9 | 00001001 | 1001 | 1001 | 0000 1001 | 9 |
10 | 00001010 | 1010 | 0001 0000 | 0000 0001 0000 0000 | 10 |
11 | 00001011 | 1011 | 0001 0001 | 0000 0001 0000 0001 | 11 |
12 | 00001100 | 1100 | 0001 0010 | 0000 0001 0000 0010 | 12 |
13 | 00001101 | 1101 | 0001 0011 | 0000 0001 0000 0011 | 13 |
14 | 00001110 | 1110 | 0001 0100 | 0000 0001 0000 0100 | 14 |
15 | 00001111 | 1111 | 0001 0101 | 0000 0001 0000 0101 | 15 |
88 | 01011000 | -- | 1000 1000 | 0000 1000 0000 1000 | 88 |
96 | 01100000 | -- | 1001 0110 | 0000 1001 0000 0110 | 96 |
根据以上表格可以总结如下:
- 任何一个十进制数都能对应一个二进制数,而且不可能重复。
- 压缩BCD码,用4个二进位表达数字0~9。所以一个字节能装两个阿拉伯数字。
- 非压缩BCD码,用8个二进位表达数字0~9。所以一个字节只能放一个阿拉伯数字。
- 尽管非压缩码用8个二进制位表达1个阿拉伯数字,但高4位其实是没有用途的,通常填充0。
- 无论压缩还是非压缩,BCD码只有10组,任何十进制数都用这10组来拼凑。
- Binary-Coded Decimal的字面含义非常直观——用二进制来编码的十进制数。