Posted on 2007-12-24 12:34
neter 閱讀(681)
評(píng)論(1) 編輯 收藏 引用 所屬分類(lèi):
程序設(shè)計(jì)
即BCD代碼。Binary-Coded Decimal,簡(jiǎn)稱(chēng)BCD,稱(chēng)BCD碼或二-十進(jìn)制代碼,亦稱(chēng)二進(jìn)碼十進(jìn)數(shù)。是一種
二進(jìn)制的數(shù)字編碼形式,用二進(jìn)制編碼的
十進(jìn)制代碼。這種編碼形式利用了四個(gè)位元來(lái)儲(chǔ)存一個(gè)十進(jìn)制的數(shù)碼,使二進(jìn)制和十進(jìn)制之間的轉(zhuǎn)換得以快捷的進(jìn)行。這種編碼技巧,最常用于會(huì)計(jì)系統(tǒng)的設(shè)計(jì)里,因?yàn)闀?huì)計(jì)制度經(jīng)常需要對(duì)很長(zhǎng)的數(shù)字串作準(zhǔn)確的計(jì)算。相對(duì)于一般的浮點(diǎn)式記數(shù)法,采用BCD碼,既可保存數(shù)值的精確度,又可免卻使電腦作浮點(diǎn)運(yùn)算時(shí)所耗費(fèi)的時(shí)間。此外,對(duì)于其他需要高精確度的計(jì)算,BCD編碼亦很常用。
由于十進(jìn)制數(shù)共有0、1、2、……、9十個(gè)數(shù)碼,因此,至少需要4位二進(jìn)制碼來(lái)表示1位十進(jìn)制數(shù)。4位二進(jìn)制碼共有2^4=16種碼組,在這16種代碼中,可以任選10種來(lái)表示10個(gè)十進(jìn)制數(shù)碼,共有N=16!/(16-10)!約等于2.9乘以10的10次方種方案。常用的BCD代碼列于末。
常用BCD編碼方式最常用的BCD編碼,就是使用"0"至"9"這十個(gè)數(shù)值的二進(jìn)碼來(lái)表示。這種編碼方式,在中國(guó)大陸稱(chēng)之為“8421碼”。除此以外,對(duì)應(yīng)不同需求,各人亦開(kāi)發(fā)了不同的編碼方法,以適應(yīng)不同的需求。這些編碼,大致可以分成有權(quán)碼和無(wú)權(quán)碼兩種:
有權(quán)BCD碼,如:8421(最常用)、2421、5421…
無(wú)權(quán)BCD碼,如:余3碼、格雷碼…
常用
BCD編碼表
|
|
8421碼
|
5421碼
|
2421碼
|
5211碼
|
余3碼
|
|
0
|
0000
|
0000
|
0000
|
0000
|
0000
|
|
1
|
0001
|
0001
|
0001
|
0001
|
0100
|
|
2
|
0010
|
0010
|
0010
|
0100
|
0101
|
|
3
|
0011
|
0011
|
0011
|
0101
|
0110
|
|
4
|
0100
|
0100
|
0100
|
0111
|
0111
|
|
5
|
0101
|
1000
|
0101
|
1000
|
1000
|
|
6
|
0110
|
1001
|
0110
|
1001
|
1001
|
|
7
|
0111
|
1010
|
0111
|
1100
|
1010
|
|
8
|
1000
|
1011
|
1110
|
1101
|
1011
|
|
9
|
1001
|
1100
|
1111
|
1111
|
1100
|
|
權(quán)
|
8421
|
5421
|
2421
|
5211
|
|
|
非壓縮式和壓縮式BCD碼
BCD又分為兩種,非壓縮式和壓縮式兩種。
前面這種81存成 “08,01” 是非壓縮式,而壓縮式會(huì)存成 “81h” (直接以十六進(jìn)制儲(chǔ)存)。非壓縮的BCD碼只有低四位有效,而壓縮的BCD碼則將高四位也用上了,就是說(shuō)一個(gè)字節(jié)有兩個(gè)BCD碼。BCD是用0和1表示十進(jìn)制,如0000表示0,0001表示1,0010表示2。而壓縮的BCD是用00表示0,01表示1,10表示2,110表示3等。
例:
1234表示成非壓縮的BCD碼是00000001000000100000001100000100,也就是0x01020304;而壓縮BCD碼則表示成0001001000110100,也就是0x1234。
但壓縮的BCD并不固定,可看情況而定,所要的就是用最少的位數(shù)表示盡可能多的數(shù)。