BCD码(Binary-Coded Decimal),用4位二进制数来表示1位十进制数中的0~9这10个数码,是一种二进制的数字编码形式,用二进制编码的十进制代码。BCD码这种编码形式利用了四个位元来储存一个十进制的数码,使二进制和十进制之间的转换得以快捷的进行。这种编码技巧最常用于会计系统的设计里,因为会计制度经常需要对很长的数字串作准确的计算。相对于一般的浮点式记数法,采用BCD码,既可保存数值的精确度,又可免去使计算机作浮点运算时所耗费的时间。此外,对于其他需要高精确度的计算,BCD编码亦很常用。
常用BCD编码方式大致可以分成有权码和无权码两种:
- 有权码,如:8421(最常用)、2421、5421
- 无权码,如:余3码、格雷码
以下为三种常见的BCD编码的比较。
十进数 | 8421-BCD码 | 余3-BCD码 | 2421-A码 |
(M10) | D C B A | C3C2C1C0 | a3a2a1a0 |
0 | 0 0 0 0 | 0 0 1 1 | 0 0 0 0 |
1 | 0 0 0 1 | 0 1 0 0 | 0 0 0 1 |
2 | 0 0 1 0 | 0 1 0 1 | 0 0 1 0 |
3 | 0 0 1 1 | 0 1 1 0 | 0 0 1 1 |
4 | 0 1 0 0 | 0 1 1 1 | 0 1 0 0 |
5 | 0 1 0 1 | 1 0 0 0 | 1 0 1 1 |
6 | 0 1 1 0 | 1 0 0 1 | 1 1 0 0 |
7 | 0 1 1 1 | 1 0 1 0 | 1 1 0 1 |
8 | 1 0 0 0 | 1 0 1 1 | 1 1 1 0 |
9 | 1 0 0 1 | 1 1 0 0 | 1 1 1 1 |
8421码
8421 BCD码是最基本和最常用的BCD码,是十进制代码中最常用的一种。它和四位自然二进制码相似,各位的权值为8、4、2、1,故称为有权BCD码。和四位自然二进制码不同的是,它只选用了四位二进制码中前10组代码,即用0000~1001分别代表它所对应的十进制数,余下的六组代码不用。
在这种编码方式中,每一位二值代码的“1”都代表一个固定数值。将每位“1”所代表的二进制数加起来就可以得到它所代表的十进制数字。因为代码中从左至右看每一位“1”分别代表数字“8”“4”“2”“1”,故得名8421码。其中每一位“1”代表的十进制数称为这一位的权。因为每位的权都是固定不变的,所以8421码是恒权码。如在8421码中:0=0000,1=0001,2=0010等。
5421码
5421BCD码各位的权依次为5421,也是有权码。其显著特点是最高位连续5个0后连续5个1。当计数器采用这种编码时,最高位可产生对称方波输出。5421BCD码的编码方案不是唯一的。
十进制数 | 5421BCD码 |
0 | 0000 |
1 | 0001 |
2 | 0010 |
3 | 0011 |
4 | 0100 |
5 | 1000 |
6 | 1001 |
7 | 1010 |
8 | 1011 |
9 | 1100 |
5421码,从左至右每位的权分别是十进制5、4、2、1。对于1011这个代码按权展开就是1×5+0×4+1×2+1×1=[8]10,可见5421码中的代码1011代表了十进制数8,其一大特点就是可以直接按权求对应的十进制数
从十六种组合代码中任选十种表示十进制数,余下的六个就是非法码,又称禁止码。禁止码不允许出现,如出现,系统不认识,将产生错误。
如8421BCD码只用了前十个代码,余下的六个代码1010、1011、1100、1101、1110、1111,即为禁止码。5421BCD码的禁止码是0101、0110、0111、1101、1110、1111。
2421码
5421BCD码和2421BCD码为有权BCD码,它们从高位到低位的权值分别为5、4、2、1和2、4、2、1。这两种有权BCD码中,有的十进制数码存在两种加权方法,例如,5421 BCD码中的数码5,既可以用1000表示,也可以用0101表示;2421BCD码中的数码6,既可以用1100表示,也可以用0110表示。这说明5421BCD码和2421 BCD码的编码方案都不是惟一的。
余3 码
余3码是8421 BCD码的每个码组加3(0011)形成的。余3码是一种变权码,每一位的在不同代码中并不代表固定的数值,主要特点是相邻的两个代码之间仅有一位的状态不同.常用于BCD码的运算电路中。