BCD码

477 阅读3分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第5天,点击查看活动详情

BCD码简介

BCD码,用4位二进制数来表示1位十进制数中的0~9这10个数码,是一种二进制的数字编码形式,用二进制编码的十进制代码。BCD码这种编码形式利用了四个位元来储存一个十进制的数码,使二进制和十进制得以快捷的进行。

8421码

8421码是最常用的一种BCD码,它是一种有权码。8,4,2,1分别对应每一位的权重。8421码用"0"至"9"这十个数值的二进制码来表示十进制数。

8421码的映射关系

0:0000

1:0001

2:0010

3:0011

4:0100

5:0101

6:0110

7:0111

8:1000

9:1001

BCD码的运算法则

由于编码是将每个十进制数用一组4位二进制数来表示,因此,若将这种BCD码直接交计算机去运算,由于计算机总是把数当作二进制数来运算,所以结果可能会出错。例:用3、BCD码求38+49。

解决的办法是对二进制加法运算的结果采用"加6修正,这种修正称为BCD调整。即将二进制加法运算的结果修正为BCD码加法运算的结果,两个两位BCD数相加时,对二进制加法运算结果采用修正规则进行修正。修正规则:

(1)如果任何两个对应位BCD数相加的结果向高一位无进位,若得到的结果小于或等于9,则该不需修正;若得到的结果大于9且小于16时,该位进行加6修正。

(2)如果任何两个对应位BCD数相加的结果向高一位有进位时(即结果大于或等于16),该位进行加6修正.

(3)低位修正结果使高位大于9时,高位进行加6修正

例1:

1+3=?

直接在表中查找1和3对应的的8421码得到1:0001,3:0011,所以1+3用8421码表示为0000+0010=0100,可以看到其对应的刚好是4:0100

例2:

5+8=?

因为5+8=13,已经超过了8421码的映射范围,所以要在此基础上加上6,使得其到映射区间范围内,所以就是0101+1000=1101,然后再加上6得到1101+0110=10011,然后在前面补位,变成00010011,这就是最后的结果了。

例3

9+9=?

因为1001+1001=10010,已经超出了4位,所以就不能按照之前的方式直接加上6了。解决的方式就是先把多出来的高位上1拿出来先放到一边

然后把剩下的四位加上6,即:0010+0110=1000

然后再将之前的高位1加上变成11000

最后部位得到结果00011000

余3 码

余3码是8421 BCD码的每个码组加3(0011)形成的。余三码是一种无权码