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