现在的位置: 首页 > 综合 > 正文

浅谈BCD码

2013年06月16日 ⁄ 综合 ⁄ 共 1720字 ⁄ 字号 评论关闭

浅谈BCD码

BCD码(Binary-Coded Decimal?)亦称二进码十进数或二-十进制代码。用4位二进制数来表示1位十进制数中的0~9这10个数码。是一种二进制的数字编码形式,用二进制编码的十进制代码。BCD码这种编码形式利用了四个位元来储存一个十进制的数码,使二进制和十进制之间的转换得以快捷的进行。

什么是BCD码

  BCD码也叫8421码就是将十进制的数以8421的形式展开成二进制,大家知道十进制是0~9十个数组成,这十个数每个数都有自己的8421码:

  0=0000 1=0001 2=0010 3=0011 4=0100 5=0101 6=0110 7=0111 8=1000 9=1001

例子:
  321的8421码就是
  3 2 1
  0011 0010 0001
因为: 0 0 1 1 =8x0+4x0+1x2+1x1 =3
   0 0 1 0 =8x0+4x0+2x1+1x0 =2.
   0 0 0 1 =8x0+4x0+2x0+1x1 =1
具体:
  BCD码是四位二进制码, 也就是将十进制的数字转化为二进制, 但是和普通的转化有一点不同, 每一个十进制的数字0-9都对应着一个四位的二进制码,对应关系如下: 十进制0 对应 二进制0000 ;十进制1 对应二进制0001 ....... 9 1001 接下来的10就有两个上述的码来表示,BCD码是遇见1001就产生进位,进位产生在这组四位二进制码的前面一组 也就是说
10 表示为00010000,不像普通的二进制码,到1111才产生进位10000,这是BCD码与二进制的表示不同的地方。

BCD码的运算法
  BCD码的运算规则:BCD码是十进制数,而运算器对数据做加减运算时,都是按二进制运算规则进行处理的。这样,当将 BCD码传送给运算器进行运算时,其结果需要修正。修正的规则是:当两个BCD码相加,如果和等于或小于 1001(即十进制数 9),不需要修正;如果相加之和在 1010 到1111(十六进制数 0AH~0FH)之间,则需加 6 进行修正;如果相加时,本位产生了进位,也需加 6 进行修正。这样做的原因是,机器按二进制相加,所以 4 位二进制数相加时,是按“逢十六进一”的原则进行运算的,而实质上是 2
个十进制数相加,应该按“逢十进一”的原则相加,16 与10相差 6,所以当和超过 9或有进位时,都要加 6 进行修正。

  “加6修正,称为BCD调整。即将二进制加法运算的结果修正为BCD码加法运算的结果,两个两位BCD数相加时,对二进制加法运算结果采用修正规则进行修正。修正规则具体为:

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

下面举例说明。
例子: 需要修正 BCD码运算值的举例。
   (1) 计算 5+8;(2) 计算 8+8
   解:(1) 将 5 和 8 以 8421 BCD输入机器,则运算如下:
   0 1 0 1
   +) 1 0 0 0
   1 1 0 1 ( 结果大于 9)
   +) 0 1 1 0 (加 6 修正)
  1 0 0 1 1 ( 即13 的 BCD码)
  结果是 0011,即十进制数 3,还产生了进位。5+8=13,结论正确。
   (2)将8以8421 BCD输入机器,则运算如下:
   1 0 0 0

+)1 0 0 0
   1 0 0 0 0 (结果大于9)
  +)0 1 1 0 (加6修正)
  1 0 1 1 0 (16的BCD码)
  结果是0110,即十进制的6,而且产生进位。8+8=16,结论正确。

BCD码与十进制数的转换

  关系直观,相互转换也很简单,

将十进制数75.4转换为BCD码如: 75.4=(0111 (0101.0100)BCD

将BCD码1000 0101.0101转换为十进制数如: (1000 0101.0101)BCD=85.5

特别注意 : 同一个8位二进制代码表示的数,当认为它表示的是二进制数和认为它表示的是二进制编码的十进制数时,数值是不相同的,这也是上文提到的BCD码与二进制的表示不同的地方。

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

抱歉!评论已关闭.