1. 4. 1 十進(jìn)制數(shù)的二進(jìn)制編碼
十進(jìn)制數(shù)的二進(jìn)制編碼簡(jiǎn)稱為二-十進(jìn)制碼或BCD碼,所謂BCD碼是指用若干位二進(jìn)制數(shù)來表示一位十進(jìn)制數(shù)。
十進(jìn)制數(shù)有0~9共10個(gè)數(shù)碼,所以表示1位十進(jìn)制數(shù),至少需要4位二進(jìn)制數(shù)。但4位二進(jìn)制數(shù)可以產(chǎn)生24= 16種組合,用4位二進(jìn)制數(shù)表示1位十進(jìn)制數(shù),有六種組合是多余的。十進(jìn)制數(shù)的二進(jìn)制編碼可以有許多種方法,即有許多種不同的編碼方案。表1.4.1列舉了目前常用的幾種編碼方案。
|
表1.5.1常用的幾種BCD代碼 |
||||
|
十進(jìn)制編碼 |
8421碼 |
余3碼 |
2421碼 |
余3循環(huán)碼 |
|
0 1 2 3 4 5 6 7 8 9 |
0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 |
0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 |
0000 0001 0010 0011 0100 1011 1100 1101 1110 1111 |
0010 0110 0111 0101 0100 1100 1101 1111 1110 1010 |
下面分別介紹幾種常用編碼。
一、8421BCD碼
8421BCD碼是最基本最常用的一種編碼方案。在這種編碼方式中每一位二進(jìn)制代碼都代表一個(gè)固定的數(shù)值,把每一位的1代表的十進(jìn)制數(shù)加起來,得到的結(jié)果就是它所代表的十進(jìn)制數(shù)碼。由于代碼中從左到右每一位的1分別表示8、4、2、1,所以把這種代碼叫做8421碼。在8421碼中每一位1代表的十進(jìn)制數(shù)稱為這一位的權(quán)。由于8421碼中的每一位的權(quán)是固定不變的,它屬于恒權(quán)代碼。恒權(quán)碼的按權(quán)展開式如下:
S= a3W3+a2W2+a1W1+a0W0 (1.5.1)
式中,a3,a2,a1,a0為各位的代碼,W3,W2,Wl,W0為各位的權(quán)值。
8421BCD碼的權(quán)為
W3= 23 = 8 W2 = 22 = 4 W1 = 21 = 2 W0 = 20 = 1
例如,8421BCD碼1001的按權(quán)展開式為
1·8+0·4+0·2+1·1= 9
因而,代碼1001表示十進(jìn)制數(shù)9。
8421BCD碼對(duì)于十進(jìn)制的10個(gè)數(shù)碼的表示與普通二進(jìn)制中的表示形式完全一樣,很容易實(shí)現(xiàn)彼此之間的轉(zhuǎn)換。而且這種編碼具有奇偶特性,當(dāng)十進(jìn)制數(shù)為奇數(shù)值時(shí),其所對(duì)應(yīng)的二進(jìn)制碼的最低位為1,當(dāng)十進(jìn)制數(shù)為偶數(shù)值時(shí),其所對(duì)應(yīng)的二進(jìn)制代碼的最低位為0,因此,采用8421BCD碼很容易判別其奇偶。
需要注意的是:在8421BCD碼中,不允許出現(xiàn)1010~1111這幾個(gè)代碼,因?yàn)樵谑M(jìn)制中,沒有數(shù)碼同它們對(duì)應(yīng)。
二、余3碼
余3碼是一種特殊的8421碼,它是由8421BCD碼加3后形成的,所以叫做余3碼。例如,十進(jìn)制數(shù)7在8421BCD碼中是0111,在余3碼中就成為1010。余3碼的各位無固定的權(quán)。
余3碼是一種“對(duì)9的自補(bǔ)”代碼。它的0和9、1和8、2和7、3和6、4和5互為反碼,即對(duì)應(yīng)碼位中,當(dāng)其中一個(gè)為0時(shí),另一個(gè)就為1。用余3碼能很方便地求得某數(shù)“對(duì)9的補(bǔ)數(shù)”,即把該數(shù)的余3碼自身按位取反,就得到該數(shù)“對(duì)9的補(bǔ)數(shù)”的余3碼。例如十進(jìn)制數(shù)4的余3碼代碼為0111,其”對(duì)9的補(bǔ)數(shù)”是5,則5的余3碼代碼為1000。
當(dāng)兩個(gè)余3碼表示的數(shù)相加時(shí),由于每個(gè)余3碼都余3,其和就余6。因此,若在用余3碼做十進(jìn)制加法時(shí),若兩數(shù)之和為10,正好等于二進(jìn)制數(shù)的16,于是便向高位自動(dòng)產(chǎn)生進(jìn)位信號(hào)。例如十進(jìn)制數(shù)4和6的余3碼分別是0111和1001,當(dāng)兩數(shù)相加時(shí),

即向高位產(chǎn)生進(jìn)位信號(hào)。
三、2421碼
2421碼也是一種恒權(quán)碼,它的0和9、1和8、2和7、3和6、4和5互為反碼,這一點(diǎn)和余3碼相似。只要將2421碼自身按位求反,就能方便地得到其“對(duì)9的補(bǔ)數(shù)”的2421碼。2421碼用4位二進(jìn)制數(shù)表示1位十進(jìn)制數(shù),其權(quán)為
W3 = 2 W2 = 4 W1 = 2 W0 = 1
例如,2421碼的0100,其按權(quán)展開式為
0·2+1·4+0·2+0·1= 4
因而,代碼0100表示十進(jìn)制數(shù)4。而其“對(duì)9的補(bǔ)數(shù)”是5,根據(jù)反碼的定義,其代碼為1011。
2421碼的這一特性在計(jì)算機(jī)中對(duì)十進(jìn)制數(shù)進(jìn)行運(yùn)算時(shí)很有用處。
四、余3循環(huán)碼
余3循環(huán)碼是一種變權(quán)碼,每一位的1在不同代碼中并不代表固定的數(shù)值。它的主要特點(diǎn)是相應(yīng)的兩個(gè)代碼之間僅有一位的狀態(tài)不同。因此,按余3循環(huán)碼連接計(jì)數(shù)器時(shí),每次狀態(tài)翻轉(zhuǎn)過程中只有一個(gè)觸發(fā)器翻轉(zhuǎn),因此譯碼時(shí)不會(huì)引發(fā)競(jìng)爭(zhēng)—冒險(xiǎn)現(xiàn)象。
1. 4. 2 可靠性編碼
在數(shù)字通信中,代碼在形成和傳送過程中,都可能發(fā)生錯(cuò)誤,例如1001變成了1000;也會(huì)因處理該代碼的邏輯電路有故障而出現(xiàn)了錯(cuò)誤的結(jié)果,例如正確的結(jié)果是1110,但由于電路故障而輸出的是1100。如果出現(xiàn)了與原始信息不同的代碼稱其為誤碼。為了使代碼在形成和傳送中不易出錯(cuò),或者出現(xiàn)了誤碼時(shí)便于發(fā)現(xiàn),甚至能查出錯(cuò)誤的位置,因此產(chǎn)生了一種可靠性編碼的方法。
一、格雷碼 (Gray )
格雷碼又叫循環(huán)碼,它有多種編碼形式,但它們有一個(gè)共同的特點(diǎn),就是任意兩個(gè)相鄰的代碼之間,它們的格雷碼僅有一位不同,其余各位均相同。表1.4.2列出了一種格雷碼。
|
表1.4.2 十進(jìn)制數(shù)碼的格雷碼 |
|
|
十進(jìn)制數(shù)碼 |
0 1 2 3 4 5 6 7 8 9 |
|
格雷碼 |
0000 0001 0011 0010 0110 0111 0101 0100 1100 1101 |
在數(shù)字系統(tǒng)中,經(jīng)常要求代碼按一定順序變化,例如按自然規(guī)律計(jì)數(shù)。如果兩個(gè)相鄰的十進(jìn)制數(shù)5和6,它們的二進(jìn)制代碼分別為0101和0110,則當(dāng)用二進(jìn)制進(jìn)行加法計(jì)數(shù)時(shí),十進(jìn)制數(shù)從5變到6,其相應(yīng)的二進(jìn)制代碼從0101變到0110,二進(jìn)制代碼0101的最低兩位都要改變。若兩位的變化不是同時(shí)發(fā)生的 (在實(shí)際電路中,沒有絕對(duì)的同時(shí)改變 ),那么,在計(jì)數(shù)過程中就可能短暫地出現(xiàn)其它代碼 (0111或0100 ),盡管這種誤碼出現(xiàn)時(shí)間是短暫的,但在高速運(yùn)算時(shí)卻是不允許的,因?yàn)檫@可能導(dǎo)致電路狀態(tài)錯(cuò)誤或輸出錯(cuò)誤,而采用格雷碼就可避免這種錯(cuò)誤。
格雷碼是一種無權(quán)碼,它與二進(jìn)制數(shù)之間的轉(zhuǎn)換關(guān)系如下:
設(shè)二進(jìn)剴數(shù)為B=BnBn-1…B1B0,其對(duì)應(yīng)的格雷碼為G=GnG n-1…G1G0,則
Gn=Bn
Gi=Bi+1⊕Bi i = 0,1,2,…,n-1
其中,⊕是異或邏輯運(yùn)算。如果參與異或運(yùn)算的兩個(gè)變量的邏輯值不同,則其運(yùn)算的結(jié)果為1。
例1.5.1把二進(jìn)制數(shù)0101和1001轉(zhuǎn)換成格雷碼。
解:

如果已知格雷碼,也可將其轉(zhuǎn)換成對(duì)應(yīng)的二進(jìn)制數(shù),其轉(zhuǎn)換關(guān)系如下:
Bn = Gn
Bi=Bi+1⊕Gi i = 0,1,2,…,n-1
例1.5.2把格雷碼1100和0111轉(zhuǎn)換成二進(jìn)制數(shù)。
解:

二、奇偶校驗(yàn)碼
奇偶校驗(yàn)碼是一種能檢驗(yàn)出二進(jìn)制信息在傳送過程中出現(xiàn)錯(cuò)誤的代碼。這種代碼由兩部分組成:一部分是奇偶校驗(yàn)位,它使整個(gè)代碼中1的個(gè)數(shù)按預(yù)先的規(guī)定成為奇數(shù)或偶數(shù),另一部分是信息位,它需要傳送的信息本身。當(dāng)信息位和校驗(yàn)位中1的總個(gè)數(shù)為奇數(shù)時(shí),稱為奇校驗(yàn),而1的總個(gè)數(shù)為偶數(shù)時(shí),稱為偶校驗(yàn)。表1.4.3表示由1位奇偶校驗(yàn)位(首位)及4位信息位構(gòu)成的5位奇偶校驗(yàn)碼。
|
表1.4.3十進(jìn)制數(shù)碼的奇偶校驗(yàn)碼 |
|||
|
十進(jìn)制數(shù)碼 |
信息碼 |
奇校驗(yàn)碼 |
偶校驗(yàn)碼 |
|
0 1 2 3 4 5 6 7 8 9 |
0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 |
10000 00001 00010 10011 00100 10101 10110 00111 01000 11001 |
00000 10001 10010 00011 10100 00101 00110 10111 11000 01001 |
這種編碼的特點(diǎn)是:使每—個(gè)代碼中含有1的個(gè)數(shù)總是奇 (偶) 數(shù)個(gè)。這樣,一旦某一代碼在傳送過程中出現(xiàn)了誤碼使1的個(gè)數(shù)不是奇 (偶) 數(shù)個(gè)時(shí),就會(huì)被發(fā)現(xiàn)。
1. 4. 3 字符代碼
計(jì)算機(jī)處理的數(shù)據(jù)不僅有數(shù)碼,還有字母、標(biāo)點(diǎn)符號(hào),運(yùn)算符號(hào)及其它特殊符號(hào)。這些符號(hào)都必須用二進(jìn)制代碼來表示, 計(jì)算機(jī)才能直接處理。通常,把用于表示各種字符的二進(jìn)制代碼稱為字符代碼。
目前,國(guó)際上采用的ASCII碼 (美國(guó)標(biāo)準(zhǔn)信息交換碼) 是一種常用的字符代碼,使用時(shí)加第8位作奇偶校驗(yàn)位。
部分字符的ASCII碼如表1.4.4所示。
|
表1.4.4 部分ASCII碼 |
||||
|
字 符 |
ASCII碼 |
|
字 符 |
ASCII碼 |
|
空 格 · ( + $ * ) -- / , ˊ = 0 1 2 3 4 5 6 7 8 9
|
P010 0000 P010 1110 P010 1000 P010 1011 P010 0100 P010 1010 P010 1001 P010 1101 P010 1111 P010 1100 P010 0111 P011 1101 P011 0000 P011 0001 P011 0010 P011 0011 P011 0100 P011 0101 P011 0110 P011 0111 P011 1000 P011 1001
|
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z |
P100 0001 P100 0010 P100 0011 P100 0100 P100 0101 P100 0110 P100 0111 P100 1000 P100 1001 P100 1010 P100 1011 P100 1100 P100 110l P100 1110 P100 1111 P101 0000 P101 0001 P101 0010 P101 0011 P101 0100 P101 0101 P101 0110 P101 0111 P101 1000 P101 1001 P101 1010 |
|
注:P是奇偶校驗(yàn)位。
