一次说清楚BCD编码

背景

在银行报文中,有很多用到BCD编码的地方,BCD编码和常见的二进制编码或者ASCII编码又有区别,所以很容易搞错,弄错概念,下面笔者就一次把BCD编码讲清楚。
 

一,概念

1,BCD编码,英文全称是Binary-Coded Decimal‎,中文名称是二进制编码的十进制数,也就是用4位二进制数来表示1位十进制数中的0~9这10个数码。

2,只有10个码,分别对应0,1,2,3,4,5,6,7,8,9 这10个数字。 这是重点,千万不要弄复杂了。

3,因为只有0到9这10个数字,所以这个BCD编码里一定不会出现A,B,C,D,E,F这些16进制才有的字符。

4,BCD编码是二进制的数字编码形式,用二进制编码表示的十进制代码,所以编码里只有0和1。

5,BCD编码是4位二进制数来表示10个十进制数,所以都是4位,就是都是4位0和1组成的编码。

二,类型

因为用4位0或者1组成代码组合有16种,但是用来表示10个数字,显然就多了,所以会有很多种组合方式,也就是有很多种BCD编码的子类型,比如8421码,2421码,5421码,余3码,余3循环码。

1,有权码

所谓有权码,就是说4位二进制码的每一位,都对应一个十进制的数值,比如8421码种,从右往左,分别对应是1,2,4,8这4个数字,如果某一位是1,就表示有这个数字,最终把这4个位上数字加起来,就表示整个8421二进制码对应的十进制数了,比如1001就是9了。

8421码

从高位到低位的权值分别为8、4、2、1 。 只选用了四位二进制码中前10组代码,即用0000~1001分别代表它所对应的十进制数,余下的六组代码不用。

5421码

从高位到低位的权值分别为5、4、2、1。编码方案不是惟一的,有些十进制数,会有两个码。比如1000和0101都是表示十进制数5 。

2421码

从高位到低位的权值分别为2、4、2、1。编码方案不是惟一的,有些十进制数,会有两个码。比如1100和0110都是表示十进制数6。

2,无权码

所谓无权码,就是说4位二进制数的每一位,没有对应的数值,而是整个编码直接对应一个数字。

余3码

在8421码的基础上,加上0011(即十进制数字3),形成的码。常用于BCD码的运算电路中。

余3循环码

相邻编码只有一位变化。

三,实例

注意:5421码和2421码都有几个数字有两个码

数值8421码5421码2421码余3码余3循环码
000000000000000110010
100010001000101000110
200100010001001010111
300110011001101100101
401000100

0100

1010

01110100
501011000
0101
1011
0101
10001100
60110

0110

1001

1100
0110
10011101
701111010
0111

1101

0111

10101111
810001011111010111110
910011100111111001010

四,补充

压缩BCD码和非压缩BCD码

压缩BCD码的每一位十进制数用4位二进制表示,一个字节(8位)表示两位十进制数。

例如:10010110表示十进制数96。

非压缩BCD码用1个字节表示一位十进制数,高四位总是0000,低4位的0000~1001表示0~9。

例如:00001000表示十进制数8.

总结

第一次接触的时候,真心很懵,但当我看到只有10个码的时候,觉得不过如此。。。

人啊,就是这样,对新东西畏惧,对熟悉的东西缺失尊重!

码字不易,记得点赞关注哟!

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

东皋长歌

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值