写在前面
最近在开发中接触到BCD码,现对了解到的BCD码知识作个总结,以便以后留用。
BCD码
用4位二进制数来表示十进制数中的0~9这十个数码的编码形式,简称为BCD码。
BCD码全称
BCD码英文全称为Binary-Coded Decimal,简称为BCD码或者二-十进制代码,亦称为二进码十进数。
BCD码优点
这种编码形式使二进制和十进制之间的转换能够快捷进行。采用BCD码,既可保存数值的精确度,又可避免使电脑作浮点运算时所消耗的时间。
BCD码应用
最常用于会计系统的设计里,因为会计制度经常需要对很长的数字串做准确的计算。也被用于其他需要高精度计算的场合。
BCD码分类
(1)BCD码分为有权和无权两类:
- 有权BCD码:8421码,2421码,5421码,...
- 无权BCD码:余3码,格雷码,...
其中,8421码是最常用的有权BCD码。
(2)BCD码又可分为压缩式和非压缩式两类。
8421码
十进制数 | 8421码
|
0 | 0000 |
1 | 0001 |
2 | 0010 |
3 | 0011 |
4 | 0100 |
5 | 0101 |
6 | 0110 |
7 | 0111 |
8 | 1000 |
9 | 1001 |
其他较常用的BCD码
十进制数 | 5421码
| 2421码 | 余3码 |
0 | 0000 | 0000 | 0011 |
1 | 0001 | 0001 | 0100 |
2 | 0010 | 0010 | 0101 |
3 | 0011 | 0011 | 0110 |
4 | 0100 | 0100 | 0111 |
5 | 1000 | 1011 | 1000 |
6 | 1001 | 1100 | 1001 |
7 | 1010 | 1101 | 1010 |
8 | 1011 | 1110 | 1011 |
9 | 1100 | 1111 | 1100 |
各种BCD码的特点
8421码编码直观,易于理解,最常用
5421码和2421码中大于5的数字都是高位为1,5以下的高位为0
余3码是在8421码基础上加上3,有上溢出和下溢出的空间
BCD码举例
以8421码为例。
(1)十进制数:123
对应的8421码为:0001 0010 0011
(2)8421码:0011 0010 0001
对应的十进制数为:321
8421码的进位
因为8421码中的9为1001,10为0001 0000,可见8421码遇见1001就产生进位。而普通的二进制码,到1111才产生进位10000。
BCD码运算
将BCD码传送给运算器运算时,需要进行修正。
修正规则为:
- 当两个BCD码相加,如果和等于或小于 1001(即十进制数9),不需要修正;
- 如果相加之和在 1010 到1111(即十六进制数 0AH~0FH)之间,则需加 6 进行修正;
- 如果相加时,本位产生了进位,也需加 6 进行修正。
运算举例
(1)计算1+2。
0 0 0 1
+0 0 1 0
0 0 1 1
结果为3,小于9,不需要修正。
(2)计算5+8。
0 1 0 1
+1 0 0 0
1 1 0 1
结果大于9,需加 6 进行修正。
1 1 0 1
+0 1 1 0
1 0 0 1 1
10011对应的十进制数为13。
参考资料
(1)百度百科:BCD码
(1)博文《BCD码》:http://home.gongkong.com/profile/blogdetail.aspx?id=2011042722165600006