BCD码

4位二进制数来表示1位十进制数中的0~910个数码,简称BCD

  BCD码这种编码形式利用了四个位元来储存一个十进制的数码,使二进制和十进制之间的转换得以快捷的进行。这种编码技巧,最常用于会计系统的设计里,因为会计制度经常需要对很长的数字串作准确的计算。相对于一般的浮点式记数法,采用BCD码,既可保存数值的精确度,又可免却使电脑作浮点运算时所耗费的时间。此外,对于其他需要高精确度的计算,BCD编码亦很常用。

 

4位二进制码共有2^4=16种码组,在这16种代码中,可以任选10种来表示10个十进制数码

常用BCD编码方式

  最常用的BCD编码,就是使用"0""9"这十个数值的二进码来表示。这种编码方式,在中国大陆称之为8421。除此以外,对应不同需求,各人亦开发了不同的编码方法,以适应不同的需求。

  常用BCD

  十进制数 8421 5421   2421   3  3循环码

  0          0000     0000     0000     0011     0010

  1          0001     0001     0001     0100     0110

  2          0010     0010     0010     0101     0111

  3          0011     0011     0011     0110     0101

  4          0100     0100     0100     0111     0100

  5          0101     1000     1011     1000     1100

  6          0110     1001     1100     1001     1101

  7          0111     1010     1101     1010     1111

  8          1000     1011     1110     1011     1110

  9          1001     1100     1111     1100     1010

  -----------------------

 

1BCD码与十进制数的转换

BCD码与十进制数的转换.关系直观,相互转换也很简单,将十进制数75.4转换为BCD码如:

75.4=(0111 (0101.0100)BCD 若将BCD1000 0101.0101转换为十进制数如: (1000 0101.0101)BCD85.5

例如:00011000,当把它视为二进制数时,其值为24;但作为2BCD码时, 其值为18

又例如00011100,如将其视为二进制数,其值为28,但不能当成BCD码,因为在8421BCD码中,它是个非法编码 .

 

2BCD码的格式

计算机中的BCD码,经常使用的有两种格式,即分离BCD码,组合BCD码。

所谓分离BCD码,即用一个字节的低四位编码表示十进制数的一位,例如数82的存放格式为:

_ _ _1 0 0 0 _ _ _ _0 0 1 0 其中_表示无关值。

组合BCD码,是将两位十进制数,存放在一个字节中,例82的存放格式是1000 0010

 

3BCD码的加减运算

由于编码是将每个十进制数用一组4位二进制数来表示,因此,若将这种BCD码直接交计算机去运算,由于

计算机总是把数当作二进制数来运算,所以结果可能会出错。例:用BCD码求38+49

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

 

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

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

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

 

下面通过例题验证上述规则的正确性。

BCD码求35 + 21

BCD 25 + 37

BCD码求38 + 49

BCD码求42 + 95

BCD码求91 + 83

BCD码求94 + 7

BCD码求76 + 45

 

两个组合BCD码进行减法运算时,当低位向高位有借位时,由于 "借一作十六" "借一作十"的差别, 将比正确的结果多6, 所以有借位时, 可采用"6修正 "来修正.

两个BCD码进行加减时,先按二进制加减指令进行运算, 再对结果用BCD调整指令进行调整, 就可得到正确的十进制运算结果。 实际上,计算机中既有组合BCD数的调整指令,也有分离BCD数的调整指令。另外, BCD码的加减运算,也可以在运算前由程序先变换成二进制数,然后由计算机对二进制数运算处理, 运算以后再将二进制数结果由程序转换为BCD码。

http://blog.youkuaiyun.com/jiayp004/archive/2009/04/30/4140064.aspx

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值