单片机/MCU论坛
直播中

zhihuizhou

13年用户 7005经验值
擅长:测试与测量
私信 关注

什么是BCD码、8421码、余三码、格雷码

用四位二进制代码来表示一位十进制数,称为二--十进制编码,简称BCD(Binary Coded Decimal)码。根据代码的每一位是否有权值BCD码可分为有权码和无权码两类,应用最多的是8421BCD码,无权码用得较多的是余三码和格雷码,我们通常所说的BCD码指的是8421BCD码。这些编码跟十进制数对应的关系如下:
十进制数                      8421BCD码                            余3码                      格雷码
0                                0000                                      0011                        0000
1                                0001                                      0100                        0001
2                                0010                                      0101                        0011
3                                0011                                      0110                        0010
4                                0100                                      0111                        0110
5                                0101                                      1000                        1110
6                                0110                                      1001                        1010
7                                0111                                      1010                        1000
8                                1000                                      1011                        1100
9                                1001                                      1100                        0100
8421BCD码中的“8421”表示从高到低各位二进制位对应的权值分别为8、4、2、1,将各二进制位与权值相乘,并将乘积相加就得相应的十进制数。例如,8421BCD码“0111”,0×8+1×4+1×2+1×1=7D,其中D表示十进制(Decimal)数。
    值得特别注意的是,8421BCD码只有0000~1001共十个,而1010、1011...等等不是8421BCD码!!
余三码是在8421BCD码的基础上,把每个数的代码加上0011(对应十进制数3)后得到的。格雷码的编码规则是相邻的两代码之间只有一位二进制位不同。不管是8421BCD码还是余三码还是格雷码,总是4个二进制位对应一个十进制数,如十进制数18对应的8421BCD码就是0001  1000。
压缩的BCD码用4个二进制位来表示十进制数,上面提到的就是压缩的BCD码。而非压缩BCD码用一个字节(八个二进制位)表示一位十进制数,高4位总是0000,低4位的0000~1001表示相应的十进制数。例如,十进制数87D,采用非压缩8421BCD码表示为二进制数是00001000 00000111B。这种非压缩BCD码主要用于非数值计算的应用领域中。

回帖(7)

zhangshaolai

2011-11-3 18:13:52
看看,谢谢分享
举报

chenengood

2011-11-3 18:31:20
举报

zhihuizhou

2011-11-3 18:47:28
引用: chenengood 发表于 2011-11-3 18:31

助理工程师 {:soso_e179:}
举报

1653164674.482100

2012-3-16 16:05:54
你好,我想问一下,十进制9的格雷码(循环码)用二进制转换后不应该是1101吗?为什么是0100??求解
举报

565437

2012-5-20 15:34:08
引用: ou19900909 发表于 2012-3-16 16:05
你好,我想问一下,十进制9的格雷码(循环码)用二进制转换后不应该是1101吗?为什么是0100??求解 ...

是楼主的表弄错了,十进制9的格雷码(循环码)用二进制转换后就是是1101,毫无疑问!!不信的话查看清华大学阎石教授的数字电子技术第五版的14页。
举报

使得此啊

2012-5-24 17:40:43
学习了!
举报

李生

2022-6-12 08:09:37
学习了!            
举报

更多回帖

发帖
×
20
完善资料,
赚取积分