持续创作,加速成长!这是我参与「掘金日新计划 · 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)形成的。余三码是一种无权码