十進制數(shù)的二進制編碼
表1.4 常用的3種BCD碼
進制字符8421碼2421碼余3碼
0000000000011
1000100010100
2001000100101
3001100110110
4010001000111
5010110111000
6011011001001
7011111011010
8100011101011
9100111111100
一、8421碼?
8421碼是最常用的一種有權碼,其4位二進制碼從高位至低位的權依次為23、22、21、20,即為8、4、2、1,故稱為8421碼 。按8421碼編碼的0~9與用4位二進制數(shù)表示的0~9完全一樣,所以,8421碼是一種人機聯(lián)系時廣泛使用的中間形式。
注意:
※ 8421碼中不允許出現(xiàn)1010~1111四種組合,因為沒有十進制數(shù)字符號與其對應。
※ 十進制數(shù)字符號的8421碼與相應ASCII碼的低四位相同,這一特點有利于簡化輸入輸出過程中BCD碼與字符代碼的轉換。
1.8421碼與十進制數(shù)之間的轉換
8421碼與十進制數(shù)之間的轉換是按位進行的,即十進制數(shù)的每一位與4位二進制編碼對應。例如
(258)10 = (0010 0101 1000)8421碼??
(0001 0010 0000 1000)8421碼?=(1208)10???
2.8421碼與二進制的區(qū)別
例如, (28)10 = (11100)2 = (00101000)8421
二、2421碼?
2421碼是另一種有權碼,其4位二進制碼從高位至低位的權依次為2、4、2、1。若一個十進制字符X的2421碼為a3 a2 a1 a0,則該字符的值為
? ? X = 2a3 + 4a2 + 2a1 + 1a0
例如,(1101)2421碼?= (7)10。?
1.2421碼與十進制數(shù)之間的轉換
2421碼與十進制數(shù)之間的轉換同樣是按位進行的,例如,
(258)10 = (0010 1011 1110)2421碼
(0010 0001 1110 1011)2421碼?= (2185)10
2.注意
?2421碼不具備單值性。例如,0101和1011都對應十進制數(shù)字5。為了與十進制字符 一 一 對應,2421碼不允許出現(xiàn)0101~1010的6種狀態(tài)。
?2421碼是一種對9的自補代碼。即一個數(shù)的2421碼只要自身按位變反,便可得到該數(shù)對9的補數(shù)的2421碼。例如,4對9的補數(shù)是5,將4的2421碼0100按位變反,便可得到5的2421碼1011。具有這一特征的BCD碼可給運算帶來方便,因為直接對BCD碼進行運算時,可利用其對9的補數(shù)將減法運算轉化為加法運算。?
?2421碼與二進制數(shù)的區(qū)別!
三、余3碼
余3碼是由8421碼加上0011形成的一種無權碼 ,由于它的每個字符編碼比相應8421碼多3,故稱為余3碼。例如,十進制字符5的余3碼等于5的8421碼0101加上0011,即為1000。
1.注意:
☆ 余3碼有6種狀態(tài)0000、0001、0010、1101、1110和1111是不允許出現(xiàn)的。
☆ 余3碼也是一種對9的自補代碼,因而可給運算帶來方便。
☆ 將兩個余3碼表示的十進制數(shù)相加時,能正確產(chǎn)生進位信號,但對“和”必須修正。修正的方法是: 如果有進位,則結果加3;如果無進位,則結果減3。
2.余3碼與十進制數(shù)之間的轉換
余3碼與十進制數(shù)之間的轉換也是按位進行的,值得注意的是每位十進制數(shù)的編碼都應余3。例如,
?? (256)10 = (0101 1000 1001)余3碼?
(1000 1001 1001 1011)余3碼 = (5668)10
計算機中使用的是二進制數(shù),人們習慣使用的是十進制數(shù),因此,輸入到計算機中的十進制數(shù)需要轉換成二進制數(shù);數(shù)據(jù)輸出時,應將二進制數(shù)轉換成十進制數(shù)。為了方便,大多數(shù)通用性較強的計算機需要能直接處理十進制形式表示的數(shù)據(jù)。為此,在計算機中還設計了一種中間數(shù)字編碼形式,它把每一位十進制數(shù)用 4 位二進制編碼表示,稱為二進制編碼的十進制表示形式,簡稱 BCD碼(binary coded decimal),又稱為二—十進制數(shù)。
4 位二進制數(shù)碼,可編碼組合成 16 種不同的狀態(tài),而十進制數(shù)只有 0,1,…,9 這十個數(shù)碼,因此選擇其中的十種狀態(tài)作BCD碼的方案有許多種,如 8421BCD碼、格雷碼、余3碼等,編碼方案見表2.1.1。
表2.1.1 用二進制編碼表示的十進制數(shù)
十進制數(shù)8421碼2421碼5211碼余3碼格雷碼
000000000000000110000
100010001000101000001
200100010001101010011
300110011010101100010
401000100011101110110
501011011100010001110
601101100101010011010
701111101110010101000
810001110111010111100
910011111111111000100
最常用的 BCD 碼是 8421BCD 碼。8421BCD 碼選取 4 位二進制數(shù)的前 10 個代碼分別對應表示十進制數(shù)的 10 個數(shù)碼,1010 ~ 1111這 6 個編碼未被使用。從表中可以看到這種編碼是有權碼。四個二進制位的位權從高向低分別為8,4,2和1,若按權求和,和數(shù)就等于該代碼所對應的十進制數(shù)。例如,0110 = 22 + 21 = 6。
把一個十進制數(shù)變成它的 8421BCD 碼數(shù)串,僅對十進制數(shù)的每一位單獨進行即可。例如變1986為相應的 8421BCD 碼表示,結果為 0001 1001 1000 0110。反轉換過程也類似,例如變 0101 1001 0011 0111 為十進制數(shù),結果應為 5937 。
8421BCD 碼的編碼值與字符 0 到 9 的 ASCII 碼的低 4 位相同,有利于簡化輸入輸出過程中從字符 → BCD 和從BCD → 字符的轉換操作,是實現(xiàn)人機聯(lián)系時比較好的中間表示。需要譯碼時,譯碼電路也比較簡單。
8421BCD 碼的主要缺點是實現(xiàn)加減運算的規(guī)則比較復雜,在某些情況下,需要對運算結果進行修正。
評論