Posted on 2007-12-24 12:34
neter 閱讀(644)
評論(1) 編輯 收藏 引用 所屬分類:
程序設計
即BCD代碼。Binary-Coded Decimal,簡稱BCD,稱BCD碼或二-十進制代碼,亦稱二進碼十進數。是一種
二進制的數字編碼形式,用二進制編碼的
十進制代碼。這種編碼形式利用了四個位元來儲存一個十進制的數碼,使二進制和十進制之間的轉換得以快捷的進行。這種編碼技巧,最常用于會計系統的設計里,因為會計制度經常需要對很長的數字串作準確的計算。相對于一般的浮點式記數法,采用BCD碼,既可保存數值的精確度,又可免卻使電腦作浮點運算時所耗費的時間。此外,對于其他需要高精確度的計算,BCD編碼亦很常用。
由于十進制數共有0、1、2、……、9十個數碼,因此,至少需要4位二進制碼來表示1位十進制數。4位二進制碼共有2^4=16種碼組,在這16種代碼中,可以任選10種來表示10個十進制數碼,共有N=16!/(16-10)!約等于2.9乘以10的10次方種方案。常用的BCD代碼列于末。
常用BCD編碼方式最常用的BCD編碼,就是使用"0"至"9"這十個數值的二進碼來表示。這種編碼方式,在中國大陸稱之為“8421碼”。除此以外,對應不同需求,各人亦開發了不同的編碼方法,以適應不同的需求。這些編碼,大致可以分成有權碼和無權碼兩種:
有權BCD碼,如:8421(最常用)、2421、5421…
無權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
|
權
|
8421
|
5421
|
2421
|
5211
|
|
|
非壓縮式和壓縮式BCD碼
BCD又分為兩種,非壓縮式和壓縮式兩種。
前面這種81存成 “08,01” 是非壓縮式,而壓縮式會存成 “81h” (直接以十六進制儲存)。非壓縮的BCD碼只有低四位有效,而壓縮的BCD碼則將高四位也用上了,就是說一個字節有兩個BCD碼。BCD是用0和1表示十進制,如0000表示0,0001表示1,0010表示2。而壓縮的BCD是用00表示0,01表示1,10表示2,110表示3等。
例:
1234表示成非壓縮的BCD碼是00000001000000100000001100000100,也就是0x01020304;而壓縮BCD碼則表示成0001001000110100,也就是0x1234。
但壓縮的BCD并不固定,可看情況而定,所要的就是用最少的位數表示盡可能多的數。