十進(jìn)制數(shù)的其它編碼方法
也有用多于4位基2碼,如用5位、7位、甚至10位基2碼,來(lái)表示一個(gè)十進(jìn)制數(shù)位的方案。有些屬于無(wú)權(quán)碼,有些屬于有權(quán)碼。表2.11給出4種編碼方案。
表2.11 十進(jìn)制數(shù)位編碼方案
十進(jìn)位 |
無(wú)權(quán)碼 |
有權(quán)碼 | ||
符號(hào) |
五中取二碼 |
蠕變碼 |
二元五進(jìn)制碼 5043210 |
獨(dú)熱碼 0123456789 |
0 |
11000 |
00000 |
0100001 |
1000000000 |
1 |
00011 |
10000 |
0100010 |
0100000000 |
2 |
00101 |
11000 |
0100100 |
0010000000 |
3 |
00110 |
11100 |
0101000 |
0001000000 |
4 |
01001 |
11110 |
0110000 |
0000100000 |
5 |
01010 |
11111 |
1000001 |
0000010000 |
6 |
01100 |
01111 |
1000010 |
0000001000 |
7 |
10001 |
00111 |
1001000 |
0000000100 |
8 |
10010 |
00011 |
1001000 |
0000000010 |
9 |
10000 |
00001 |
1010000 |
0000000001 |
五中取二碼 (2-out-of-5 Code)使用5位基2碼,并且每個(gè)代碼必須包含2個(gè)"1"和3個(gè)"0",因此提供了一位(或奇數(shù)位)檢粗能力。
蠕變碼(Creeping Code)也用5位基2碼,是由一個(gè)"1"逐次移位擴(kuò)展和收縮而形成的,符合格雷碼的編碼規(guī)則。
④ 數(shù)字串在計(jì)算機(jī)內(nèi)的表示與存儲(chǔ)
人們習(xí)慣使用10進(jìn)制數(shù),而在計(jì)算機(jī)內(nèi),采用二進(jìn)制表示和處理數(shù)據(jù)更方便。因此,在計(jì)算機(jī)輸入和輸出數(shù)據(jù)時(shí),要進(jìn)行十→二和二→十的進(jìn)制轉(zhuǎn)換處理,這是多數(shù)應(yīng)用環(huán)境中的實(shí)際情況。而在某些特定的應(yīng)用領(lǐng)域中,如商業(yè)統(tǒng)計(jì),其特點(diǎn)是運(yùn)算簡(jiǎn)單而數(shù)據(jù)量很大,這樣使輸入輸出過(guò)程中的進(jìn)制轉(zhuǎn)換所占的時(shí)間比例很大。從提高機(jī)器的運(yùn)行效率考慮,也可以采用在計(jì)算機(jī)內(nèi)部直接用十進(jìn)制方式表示和處理數(shù)據(jù),這要求計(jì)算機(jī)內(nèi)部增加少量硬件線路。目前,大多數(shù)通用性較強(qiáng)的計(jì)算機(jī),都能直接處理十進(jìn)制形式表示的數(shù)值。采用十進(jìn)制表示數(shù)據(jù)的另一個(gè)目的,是提高數(shù)據(jù)的表示范圍和運(yùn)算精度,就是說(shuō),十進(jìn)制數(shù)在計(jì)算機(jī)內(nèi)是以十進(jìn)制的數(shù)位組成的數(shù)串形式存儲(chǔ)與計(jì)算的,其位數(shù),即串長(zhǎng)是可變的,可規(guī)定最長(zhǎng)可用位數(shù),因此不受二進(jìn)制整數(shù)和浮點(diǎn)數(shù)統(tǒng)一格式的約束。
十進(jìn)制數(shù)串在計(jì)算機(jī)內(nèi)主要有兩種表示形式。
a. 字符串形式,即一個(gè)字節(jié)存放一個(gè)十進(jìn)制的數(shù)位或符號(hào)位。在主存中,這樣的一個(gè)十進(jìn)制數(shù)占用連續(xù)的多個(gè)字節(jié),故為了指明這樣一個(gè)數(shù),需要給出該數(shù)在主存中的起始地址和位數(shù)(串的長(zhǎng)度)。
對(duì)用這種方式表示的數(shù)據(jù)進(jìn)行算術(shù)運(yùn)算是很不方便的,因?yàn)槊總€(gè)數(shù)字符占用一個(gè)字節(jié),其低四位的值表示數(shù)值,而高四位的值在進(jìn)行算術(shù)運(yùn)算時(shí)不具有數(shù)值的意義。因此,用這種方式表示的十進(jìn)制字符串,主要用在非數(shù)值計(jì)算的有關(guān)應(yīng)用領(lǐng)域中。
b. 壓縮的十進(jìn)制數(shù)串形式,即一個(gè)字節(jié)存放兩個(gè)十進(jìn)制的數(shù)位,它比前一種形式節(jié)省存儲(chǔ)空間,又便于直接完成十進(jìn)制數(shù)的算術(shù)運(yùn)算,是廣泛采用的較為理想的方法。
用壓縮的十進(jìn)制數(shù)串表示一個(gè)數(shù),要占用主存連續(xù)的多個(gè)字節(jié),每個(gè)數(shù)位占用半個(gè)字節(jié)(即4個(gè)二進(jìn)制位),其值可用二-十進(jìn)制編碼(BCD碼,數(shù)字符的ASCII碼的低4位)表示,符號(hào)位也占用半個(gè)字節(jié)并存放在最低數(shù)字位之后,其值選用四位編碼的六種冗余狀態(tài)中的有關(guān)值,如用1100表示正號(hào),用1101表示負(fù)號(hào)。在這種表示中,規(guī)定數(shù)值位加符號(hào)位之和必須為偶數(shù),當(dāng)其和不為偶數(shù)時(shí),應(yīng)在最高數(shù)字位之前補(bǔ)一個(gè)0。此時(shí),表示一個(gè)數(shù)要占用該偶數(shù)值位的一半那么多個(gè)字節(jié)。例如:
+123被表示成 123C, -12 被表示成 012D。
要指明一個(gè)壓縮的十進(jìn)制數(shù)串,也需給出它在主存中的首地址和數(shù)字位個(gè)數(shù)(不含符號(hào)位),又稱位長(zhǎng),位長(zhǎng)為0的數(shù)其值為0。壓縮的十進(jìn)制數(shù)串表示方法的優(yōu)點(diǎn)是位長(zhǎng)可變,許多機(jī)器中規(guī)定該長(zhǎng)度從0到31,有的甚至更長(zhǎng)。
評(píng)論