8421碼

BCD碼中最常用的一種

8421碼是中國大陸的叫法,8421碼是BCD碼中最常用的一種。在這種編碼方式中每一位二值代碼的1都是代表一個固定數值,把每一位的1代表的十進位數加起來,得到的結果就是它所代表的十進位數碼。由於代碼中從左到右每一位的1分別表示8,4,2,1,所以把這種代碼叫做8421代碼。每一位的1代表的十進位數稱為這一位的權。8421碼中的每一位的權是固定不變的。

簡介


計算機使用二進位數來處理信息,但是如果二進位的形式輸入和輸出數據,就十分不方便了。一般來說,輸入時採用十進位數。因此計算機把十進位數轉換成二進位數就要用到一種轉換碼,BCD碼就是其中的一種。BCD碼分為壓縮BCD碼和非壓縮BCD碼。對於壓縮BCD碼用,每位BCD碼用四個二進位位表示,一個位元組表示兩位BCD碼。非壓縮BCD碼用一個位元組表示一位BCD碼,其高四位總是0000,低四位從0000-1001,分表表示0-9。這種編碼技巧,最常用於會計系統的設計里,因為會計制度經常需要對很長的數字串作準確的計算。相對於一般的浮點式記數法,採用BCD碼,既可保存數值的精確度,又可免卻使電腦作浮點運算時所耗費的時間。此外,對於其他需要高精確度的計算,BCD編碼亦很常用。
8421碼又稱為BCD碼,是十進位代碼中最常用的一種。在這種編碼方式中,每一位二值代碼的“1”都代表一個固定數值。將每位“1”所代表的二進位數加起來就可以得到它所代表的十進位數字。因為代碼中從左至右看每一位“1”分別代表數字“8”“4”“2”“1”,故得名8421碼。其中每一位“1”代表的十進位數稱為這一位的權。因為每位的權都是固定不變的,所以8421碼是恆權碼。

編碼方式


最常用的BCD編碼,就是使用"0"至"9"這十個數值的二進碼來表示。這種編碼方式,在中國大陸稱之為“8421碼”。除此以外,對應不同需求,各人亦開發了不同的編碼方法,以適應不同的需求。這些編碼,大致可以分成有權碼和無權碼兩種:
有權BCD碼,如:8421(最常用)、2421、5421…
無權BCD碼,如:餘3碼、格雷碼
以下為三種常見的BCD編碼的比較。
十進數8421-BCD碼餘3-BCD碼2421-A碼
(M10) D C B A C3 C2 C1 C0 a3 a2 a1 a0
0 0 0 0 0 0 0 1 1 0 0 0 0
1 0 0 0 1 0 1 0 0 0 0 0 1
2 0 0 1 0 0 1 0 1 0 0 1 0
3 0 0 1 1 0 1 1 0 0 0 1 1
4 0 1 0 0 0 1 1 1 0 1 0 0
5 0 1 0 1 1 0 0 0 0 1 0 1
6 0 1 1 0 1 0 0 1 0 1 1 0
7 0 1 1 1 1 0 1 0 0 1 1 1
8 1 0 0 0 1 0 1 1 1 1 1 0
9 1 0 0 1 1 1 0 0 1 1 1 1

常用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
什麼是ABCD碼
abcd碼也叫8421碼就是將十六進位的數以8421的形式展開成二進位,大家知道十六進位是0~F十六個數組成,這十六個數每個數都有自己的8421碼:
0=0000
1=0001
2=0010
3=0011
4=0100
5=0101
6=0110
7=0111
8=1000
9=1001
A(10)=1010
B(11)=1011
C(12)=1100
D(13)=1101
E(14)=1110
F(15)=1111
舉個例子:
3D1的8421碼就是
3D1
0011 1101 0001
就是把他們相對應的數字進行相加得到的數就是十六進位了。
具體:bcd碼是十位二進位碼,也就是將十進位的數字轉化為二進位,但是和普通的轉化有一點不同,每一個十進位的數字0-9都對應著一個四位的二進位碼,對應關係如下:十進位0對應二進位0000;十進位1對應二進位0001 .......9 1001接下來的10就有兩個上述的碼來表示10表示為00010000也就是BCD碼是遇見1001就產生進位,不象普通的二進位碼,到1111才產生進位10000。
舉例:某二進位無符號數11101010,轉換為三位非壓縮BCD數,按百位、十位和個位的順序表示,應為()。
A.00000001 00000011 00000111 B. 00000011 00000001 00000111
C.00000010 00000011 00000100 D. 00000011 00000001 00001001
解:(1)11101010轉換為十進位:234
(2)按百位、十位和個位的順序表示,應選C。
附註:壓縮BCD碼與非壓縮BCD碼的區別——壓縮BCD碼的每一位用4位二進位表示,一個位元組表示兩位十進位數。例如10010110B表示十進位數96D;非壓縮BCD碼用1個位元組表示一位十進位數,高四位總是0000,低4位的0000~1001表示0~9.例如00
餘3碼
餘3碼是8421BCD碼的每個碼組加3(0011)形成的。常用於BCD碼的運算電路中。
餘3循環碼是無權碼,即每個編碼中的1和0沒有確切的權值,整個編碼直接代表一個數值。主要優點是相鄰編碼只有一位變化,避免了過渡碼產生的“雜訊”。
Gray碼
Gray碼(格雷碼)也稱循環碼,在一組數的編碼中,若任意兩個相鄰數的代碼只有一位二進位數不同[2]。Gray碼的編碼方案有多種,典型的Gray碼如下表所示。從表中看出,這種代碼除了具有單位距離碼的特點外,還有一個特點就是具有反射特性,即按表中所示的對稱軸為界,除最高位互補反射外,其餘低位數沿對稱軸鏡像對稱。利用這一反射特性可以方便地構成位數不同的Gray碼。001000B表示十進位數8。