BCD码BCD码(Binary Coded Decimal),即二-十进制编码,是用四位二进制码的 10 种组合表示十进制数0-9。这种编码至少需要用四位二进制码元,而四位二进制码元可以有16种组合。当用这些组合表示十进制数0-9时,有六种组合不用。4 N; a7 m2 j! O& ^: n4 E
1 |( m5 R4 A) W, }
目录 u7 E% K& J, S
BCD码种类BCD码的格式BCD码的运算法则) D: v5 _; g+ ? M" E
BCD码种类* ]2 @( o) Q& \8 A. ^8 k' M
BCD码可分为有权码和无权码两类:有权BCD码有8421码、2421码、5421码,其中8421码是最常用的;无权BCD码有余3码、格雷码等。
4 @' I1 i! T. ` R2 d. s( ~' `( r7 r. d7 Z0 H
: z) J' |- ]3 k/ f7 W9 Y3 c
1. 8421 BCD码 l& S, k' k i8 `
7 b' c8 J% O( q% m7 ^, p* d% h# c
8421 BCD码是最基本和最常用的BCD码,它和四位自然二进制码相似,各位的权值为8、4、2、1,故称为有权BCD码。和四位自然二进制码不同的是,它只选用了四位二进制码中前10组代码,即用0000~1001分别代表它所对应的十进制数,余下的六组代码不用。
8 w8 B+ H0 W4 ^* b4 v" `) B, N- X. h3 }6 O$ a+ n
2. 5421 BCD码和2421 BCD码
2 u" F- p1 u" J% _$ t- A; m8 r3 V- b8 T7 U( [2 G) g. z
5421 BCD码和2421 BCD码为有权BCD码,它们从高位到低位的权值分别为5、4、2、1和2、4、2、1。这两种有权BCD码中,有的十进制数码存在两种加权方法,例如,5421 BCD码中的数码5,既可以用1000表示,也可以用0101表示;2421 BCD码中的数码6,既可以用1100表示, 也可以用0110表示。这说明5421 BCD码和2421 BCD码的编码方案都不是惟一的,表1-2只列出了一种编码方案。6 [6 y' |; v, i5 E+ u
4 X8 h; M8 a, R4 C2 F, ?
上表中2421 BCD码的10个数码中,0和9、1和8、2和7、3和6、4和5的代码对应位恰好一个是0时,另一个就是1。就称0和9、1和8互为反码。1 Q" V) F' V0 E& P& G
4 s& R9 }& Q; ~6 M& l! N0 o3. 余3 码' M4 F4 o8 \2 l
7 h& b. I- B& x- n j+ a" r4 h; _余3码是8421 BCD码的每个码组加3(0011)形成的。常用于BCD码的运算电路中。; P0 l- ~- Q0 U3 V# g8 \( y
: `, H! j7 S# v, h4. Gray码(格雷码)
: {2 X0 z9 o: c2 I! K/ ?/ @" V5 u! |3 E8 t' Y
Gray码也称循环码,其最基本的特性是任何相邻的两组代码中,仅有一位数码不同,因而又叫单位间隔码。1 D# b# b. L8 s; `/ q
5 K' S1 A0 s3 _Gray码的编码方案有多种,典型的Gray码如下表所示。从表中看出,这种代码除了具有单位间隔码的特点外,还有一个特点就是具有反射特性,即按表中所示的对称轴为界,除最高位互补反射外,其余低位数沿对称轴镜像对称。利用这一反射特性可以方便地构成位数不同的Gray码。
0 m" M* ^- F; ^" k. T$ f, ?* R3 S) |7 w7 ~3 ` x& |) ?: @$ r
" R# j1 h6 v) F# n
BCD码的格式
( p* @% B$ P: X n计算机中的BCD码,经常使用的有两种格式,即分离BCD码,组合BCD码。6 H6 I$ `" q2 L1 J, e& Z
' s6 D: k% T5 A+ P) P( ^4 p6 C所谓分离BCD码,即用一个字节的低四位编码表示十进制数的一位,例如数82的存放格式为:5 {; c8 M: r, j
! I0 @- B. H( B% v6 O# W_ _ _1 0 0 0 _ _ _ _0 0 1 0 其中_表示无关值。
+ @) J: I4 e: \. S- d, ~1 W% q9 g# e% M! c* K
组合BCD码,是将两位十进制数,存放在一个字节中,例82的存放格式是1000 0010$ I! d4 \( c1 Y! q, X0 M
; l+ z1 U2 k" h8 o9 l9 ~
BCD码的运算法则) S) \8 g* N" k" n- Y/ P
由于编码是将每个十进制数用一组4位二进制数来表示,因此,若将这种BCD码直接交计算机去运算,由于计算机总是把数当作二进制数来运算,所以结果可能会出错。例:用BCD码求38+49。
& f4 e" N$ K2 F5 N; R! E+ ?9 I6 Y
: o- E( `! S/ b+ y/ B解决的办法是对二进制加法运算的结果采用"加6修正,这种修正称为BCD调整。即将二进制加法运算的结果修正为BCD码加法运算的结果,两个两位BCD数相加时,对二进制加法运算结果采用修正规则进行修正。修正规则:
) x6 s0 V+ X0 e' j1 P- ?. V! T( }. K5 Q! Z1 L' C& K( V
(1)假如任何两个对应位BCD数相加的结果向高一位无进位,若得到的结果小于或即是9,则该不需修正;若得到的结果大于9且小于16时,该位进行加6修正。
8 R: q! D$ K9 V, L& Z. E( G- c
: G4 j( S% X/ V/ Q) G# f5 J(2)假如任何两个对应位BCD数相加的结果向高一位有进位时(即结果大于或即是16),该位进行加6修正.: y" M4 ^/ o6 _0 l& s- ?2 y
, `0 l N: H% b9 b; o
(3)低位修正结果使高位大于9时,高位进行加6修正。0 k K- O9 N0 [) y' Y
|