《計算機組成與系統(tǒng)結構》課件第2章_第1頁
《計算機組成與系統(tǒng)結構》課件第2章_第2頁
《計算機組成與系統(tǒng)結構》課件第2章_第3頁
《計算機組成與系統(tǒng)結構》課件第2章_第4頁
《計算機組成與系統(tǒng)結構》課件第2章_第5頁
已閱讀5頁,還剩109頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

第2章計算機系統(tǒng)中的數據表示2.1數據編碼2.2非數值數據的編碼2.3檢錯與糾錯碼

2.1數據編碼

2.1.1數值數據的編碼

1.概述

1)進位計數制及其轉換

常見的進位計數制有十進制、二進制、八進制和十六進制。

十進制數中共有0~9十個數碼,其計數特點及進位原則為“逢十進一”。十進制的基數為10,位權為10i(i是整數)。十進制數的后面常用字母D標記或不加標識。

計算機中常用的計數制還有二進制、八進制和十六進制。二進制數中只有0和1兩個數碼,其計數特點及進位原則為“逢二進一”。二進制的基數為2,位權為2i(i是整數)。二進制數的后面常用字母B標記。

八進制數中共有0~7八個數碼,其計數特點及進位原則為“逢八進一”。八進制的基數為8,位權為8i(i是整數)。八進制數的后面常用字母O標記。

十六進制數中共有0~9、A、B、C、D、E、F十六個數碼,其計數特點及進位原則為“逢十六進一”。十六進制的基數為16,位權為16i(i是整數)。十六進制數的后面常用字母H標記。任何一種進位計數制表示的數都可以寫成按權展開的多項式之和,即任意一個r進制數N可表示為

(2-1)

其中,Di為該數制采用的基本數符,ri是權,r是基數。

數值數據是表示數量多少和數值大小的數據,即在數軸上能找到其對應點的數據。

各種數值數據在計算機中表示的形式稱為機器數。機器數對應的實際數值稱為數的真值。

2)無符號數與有符號數

(1)無符號數。

所謂無符號數即沒有符號的數,數中的每一位均用來表示數值。所以,8位二進制無符號數所表示的數值范圍是0~255。而16位無符號數的表示范圍為0~65535。

(2)有符號數。由于機器是無法直接識別“+”(正)、“-”(負)符號,而“正”、“負”恰好是兩種截然不同的狀態(tài),若用“0”表示“正”,用“1”表示“負”,則符號也被數字化了,再按規(guī)定將符號放在有效數字的前面就組成了有符號數。

3)定點數與浮點數

(1)定點數。

在機器數表示中,若約定小數點的位置固定不變,則稱為定點數。有兩種形式的定點數:定點整數(純整數,小數點定在最低有效數值位之后)和定點小數(純小數,小數點在最高有效數值位之前)。具體表示形式如圖2.1所示。圖2.1有符號定點數的表示形式

(2)浮點數?;鶖禐?的數F的浮點表示為

F=M×2E

(2-2)

其中M稱為尾數,E稱為階碼。

尾數為帶符號的純小數,階碼為帶符號的純整數。計算機中浮點數的一般表示格式如圖2.2所示,其中數符(即數據的符號)就是尾符(即尾數的符號)。圖2.2浮點數的一般表示格式

2.原碼

原碼是機器數中最簡單的一種表示形式,其符號位為0表示正數,符號位為1表示負數,數值位即真值的絕對值。

(1)整數原碼的定義。根據圖2.1(a),若整數用二進制n位表示,則整數原碼的定義為

(2-3)

式中X為真值,n-1為整數數值位的位數。

例2.1當X=+35時,若采用8位二進制編碼,其原碼表示為

[X]原=00100011

若X=-35,同樣用8位編碼表示,則

[X]原=10100011

從本例可以看到,符號位總是放在最高位。同時,原碼表示又稱作帶符號的絕對值表示,即在符號的后面跟著的就是該數據的絕對值。

(2)小數原碼的定義。根據圖2.1(b),若小數用二進制n位表示,則小數原碼的定義為

(2-4)根據式(2-4),純小數的原碼可以表示為

對于正數:

[X]原=0.x1x2…xn-1

對于負數:

[X]原=1.x1x2…xn-1

例2.2若純小數X=0.46875,用包括符號位在內的8位定點原碼表示為

[X]原=0.0111100

若純小數X=-0.46875,用包括符號位的8位定點原碼表示為

[X]原=1.0111100數值原碼表示法簡單直觀,但加減運算卻很麻煩。同時,對于數值0,用原碼表示則不是唯一的,有兩種表示形式,以8位原碼表示的0為

[+0]原=0.0000000或[+0]原=00000000

[-0]原=1.0000000或[-0]原=10000000

可見[+0]原不等于[-0]原,即原碼中的“零”有兩種表示形式。

利用上述定義,原碼n位(包括一位符號位)整數及純小

數所能表示的數值范圍分別為-(2n-1-1)~+(2n-1-1)和

-(1-2-(n-1))~+(1-2-(n-1))。

3.補碼

1)補數的概念

在日常生活中,常會遇到“補數”的概念。如時鐘指示6點,欲使它指示3點,既可按順時針方向將分針轉9圈,也可按逆時針方向將分針轉3圈,結果是一致的。假設順時針方向轉為正,逆時針方向轉為負,則有

6-3=3

6+9=15

由于時鐘的時針轉一圈能指示12個小時,這“12”在時鐘里是不被顯示而自動丟失的,即15-12=3,故15點和3點均顯示3點。這樣-3和+9對時鐘而言其作用是一致的。在數學上稱12為模,寫作mod12,而稱+9是-3以12為模的補數。

2)補碼的定義

(1)整數補碼的定義。同樣根據圖2.1(a),若整數用二進制n位表示,則整數補碼的定義為

(2-5)

由式(2-5)可以看到,對正數來說,補碼與原碼的定義完全一樣。同樣的例子,假定X=+35時,若用8位二進制編碼的補碼表示,則

[X]補=00100011但是,對負數而言,兩者是不同的?,F(xiàn)仍以X=-35為例,可以利用式(2-5)來求得該數的8位補碼表示。但這種方法相對比較麻煩。簡單的方法有如下幾種:

①將X=+35的原碼表示,包括符號位在內各位取反,再在最低位上加1。

②將X=-35的原碼表示,不包括符號位各位取反,再在最低位上加1。

③將X=+35的原碼表示,從最低位逐位向高位尋找,找到第一個1不變,以后各位1變0、0變1直至符號位。

(2)小數補碼的定義。小數用二進制n位表示,則小數補碼的定義為

(2-6)

根據式(2-6),純小數的補碼同樣可以表示為

對于正數:

[X]補=0.x1x2…xn-1

對于負數:

[X]補=1.x1x2…xn-1

同樣,小數點是隱含的。

例2.3若純小數X=0.46875,用包括符號位的8位定點補碼表示為

[X]補=0.0111100

可以看到,對于正數,補碼純小數表示與原碼是一樣的。對于負數純小數,構成其補碼表示形式所采用的方法與整數一樣。因此,當X=-0.46875時,包括符號位在內的8位定點補碼可表示為

[X]補=1.1000100

n位補碼表示的整數數值范圍為-2n-1~+(2n-1-1)。n位補碼表示的小數數值范圍為-1~+(1-2-n+1)。

3)補碼的特點

(1)0的表示是唯一的。

[+0]補=0.0000000

[-0]補=2+(-0.0000000)=10.0000000-0.0000000

=0.0000000

顯然[+0]補=[-0]補=0.0000000,即補碼中的“零”只有一種表示形式。

(2)變形碼。當模數為4時,形成了雙符號位的補碼。如X=-0.1001,對mod22而言,有

[X]補=22+X=100.0000000-0.1001000=11.0111000

這種雙符號位的補碼又叫做變形補碼,它在階碼運算和溢出判斷中,有其特殊作用。

(3)求補運算。在許多處理器中都設置了求補指令,即對操作數求其補碼。具體運算就是將操作數(包括符號位在內)各位取反再在最低位上加1。對一個正數求補,其結果就會變做負數。例如,對+68求補,其結果必為-68,就如同上面對+35求補就得到-35的結果一樣。同樣,對-68求補,其結果必為+68。

求補運算可用上述的對負數進行補碼編碼的四種方法的任一種來實現(xiàn),當然以簡單快速為好,第3章中將有具體的實現(xiàn)方案。

(4)簡化加減法。利用補碼實現(xiàn)兩數相加是很方便的,補碼加法的運算法則為

[X+Y]補=[X]補+[Y]補

(2-7)

由式(2-7)可以看到,兩數和的補碼就等于兩數補碼之和。對于減法,正如上面所描述的,對補碼求補就相當于在其前面加了一個負號。也就是說[[X]補]求補=[-X]補;[[-X]補]求補=[X]補。有了這樣的特性,就使得減法運算完全可以用加法來實現(xiàn),即

[X-Y]補=[X]補+[-Y]補

=[X]補+[[Y]補]求補

(2-8)

可見,利用補碼,減法運算可用加法來實現(xiàn)。這也是所有常見的處理器中只設置加法器而不設置減法器的原因,這樣就簡化了處理器的結構。現(xiàn)舉例說明。

例2.4求68-35=?

解可以將上式寫作68+(-35)=Z,則

[Z]補=[68]補+[(-35)]補=01000100+11011101

=00100001

所獲得的結果正是33。

(5)算術或邏輯左移。對于用補碼表示的數據,只要沒有超出所規(guī)定的數值范圍,每算術或邏輯左移一次,即各位順序向左移一位,最高位移出,最低位補進一個0,相當于該數據乘以2。但必須注意前提條件。

(6)算術右移。算術右移規(guī)定保持最高位(符號位)不變,并將包括最高位的數據順序右移一位,最低位移出。補碼表示的數據,每算術右移一位相當于除以2。

4.反碼

反碼通常用來作為由原碼求補碼或者由補碼求原碼的中間過渡。

1)反碼的定義

(1)整數反碼的定義。整數反碼定義為

(2-9)

例2.5若X=35,則其8位反碼表示為

[X]反=00100011

若X=-35,則其反碼表示為

[X]反=11011100

(2)小數反碼的定義。小數反碼定義為

(2-10)

2)特點

(1)0的表示。

在數值的反碼表示中,0同樣有兩種表示形式,用8位表示如下:

[+0]反=0.0000000=00000000

[-0]反=1.1111111=11111111

(2)負數反碼與補碼的關系。

從負數反碼及補碼的小數定義可以看到:

[X]反=2-2-n+1+X

[X]補=2+X可見,

[X]補=[X]反+2-n+1

(2-11)

式(2-11)進一步驗證了前面的結論:只要在某負數的反碼的最低位加1即可獲得該數值的補碼。該結論對整數同樣成立。

(3)數值范圍。n位反碼表示的整數數值范圍為-(2n-1-1)

~+(2n-1-1);n位反碼表示的小數數值范圍為-(1-2-(n-1))~+(1-2-(n-1))。

5.移碼

1)移碼的由來

帶符號數在計算機中除了用原碼、補碼和反碼表示外,還用另一種機器數——移碼表示,由于它的一些突出的優(yōu)點,目前已被廣泛采用。當真值用補碼表示時,由于符號位和數值部分一起編碼,與習慣上的表示法不同,因此人們很難從補碼的形式上直接判斷其真值的大小。例如:

十進制數X=+31,對應的二進制數為+11111,若用8位表示,則[X]補=00011111;

十進制數X=-31,對應的二進制數為-11111,若用8位表示,則[X]補=11100001。

上述補碼表示中,從代碼形式看,符號位也是一位二進制數。如果按這8位二進制代碼比較其大小,會得出11100001>00011111,其實恰恰相反。如果對每個真值加上一個2m(m為整數的數值位數,此處可為7,即8-1),情況就發(fā)生了變化,如:

X=00011111加上27可得10011111;

X=11100001加上27可得01100001。

比較它們的結果可見,10011111>01100001。這樣一來,從8位代碼本身就可看出真值的實際大小。

在原來補碼表示的編碼上加上一個偏移量,就構成了新的編碼,即移碼。上述例子中,由于編碼長度為8位,故使用的偏移量為27

。這或許就是移碼名稱的由來。

2)移碼的定義

由于移碼多用于浮點數中表示階碼,均為整數,因此這里只介紹定點整數的移碼表示。當用包括符號位在內的n位字長時,整數移碼定義為

[X]移=2n-1+X

(-2n-1≤X<2n-1)

(mod2n)

(2-12)

要獲得整數的移碼表示,可以利用定義來實現(xiàn),也可以先求出該數的補碼表示,而后將符號位取反。仍用前面的例子,當X=35時,其8位字長移碼求解如下:

先求出[X]補=00100011,再將其符號位取反,即

[X]移=10100011。或用定義求解,此時2n-1表示為二進制數10000000,X=00100011,則

[X]移=2n-1+X=10100011

若X=-35,先求出[X]補=11011101,則[X]移=01011101?;蛴枚x求解,則

[X]移=2n-1+X=10000000-00100011

=01011101

3)特點

(1)移碼就是在真值上加一個常數2n-1

。在數軸上移碼所表示的范圍恰好對應于真值在數軸上的范圍向軸的正方向移動2n-1

個單元,如圖2.3所示。圖2.3移碼在數軸上的表示

(2)移碼與補碼的關系。

移碼與補碼的關系可用圖2.4表示。

由圖2.4可以看到,移碼與補碼間的關系十分密切,只要將補碼的符號位取反,則補碼就轉換成了相應的移碼;同樣,只要將移碼的符號位取反,則移碼就轉換成了相應的補碼。

(3)移碼碼值的大小反映了數值的大小,因此,正數移碼的碼值一定大于負數移碼的碼值。也就是說,大碼值所表示的數值一定大于小碼值所表示的數值。圖2.4移碼與補碼的關系

6.不同編碼的比較

原碼表示很直觀。若采用原碼做乘除運算,可取其絕對值(原碼的數值部分)直接運算,并按同號相乘除取正、異號相乘除取負的原則,單獨處理符號位,比較方便。但原碼加減運算時,其運算比較復雜。

表2.1列出了8位字長中所有二進制代碼組合與無符號數及定點整數原碼、補碼、反碼和移碼所代表真值的對應關系。2.1.2數據的浮點表示

1.浮點數的表示方法

1)概述

實際上,計算機中處理的數不一定是純小數或純整數,而且有些數據的數值范圍相差很大(如電子的質量為9×10-28g,太陽的質量為2×1033g),它們都不能直接用定點小數或定點整數表示,但均可用浮點數表示。浮點數即小數點的位置可以浮動的數,例如:

352.47=3.5247×102=3524.7×10-1=0.35247×103

顯然,這里小數點的位置是變化的,但因為分別乘上了不同的10的方冪,故其值不變。浮點數表示的一般形式為

F=M×RE

(2-13)

式中,M為尾數(可正可負),E為階碼(可正可負),R是基數(或基值)。在計算機中,基數可取2、4、8或16等。

當基數R=2時,式(2-13)就變成了式(2-2)。此時,數F可寫成下列不同形式:

F=11.0101=0.110101×210=1.10101×21

=1101.01×2-10=0.00110101×2100=…

式中,尾數與階碼用二進制數表示,基數用十進制數表示。

2)浮點數的表示

浮點數在機器中的形式有兩種:圖2.2所示的形式和圖2.5所示的形式。至于采用哪種形式,是由計算機的設計人員決定的。圖2.5浮點數的另一種表示形式

2.浮點數所表示的數值范圍

浮點數可分為非規(guī)格化浮點數和規(guī)格化浮點數,它們有一些不同,下面分別討論。

1)非規(guī)格化浮點數

由浮點數的表示式可以看到,當基數確定時,浮點數由階碼E和尾數M兩部分確定。需要強調的是:①階碼是整數,階碼的位數k決定浮點數表示的數值范圍,也就是決定了所表示

的數值的大小,階符決定階碼的正負;②尾數是小數,其位數n主要用于決定浮點數的精度;③尾數的符號表示浮點數的正負。非規(guī)格化浮點數的表示范圍有多大?以通式F=M×RE為例,設浮點數的基值R=2;階碼的數值位取k位,階符1位且采用補碼表示;尾數的數值位取n位,尾符1位,同樣采用補碼表示。當浮點數為非規(guī)格化數時,可先分別求出階碼和尾數的表示范圍:

階碼的最小值為-2k

,階碼的最大值為(2k

-1);

尾數的最小負值為-1,尾數的最大負值為-2-n;

尾數的最小正值為+2-n,尾數的最大正值為+(1-2-n)。

根據上面的分析,此非規(guī)格化浮點數在數軸上的表示范圍如圖2.6所示。圖2.6非規(guī)格化浮點數的數值范圍

2)規(guī)格化浮點數

在計算機中,為了充分利用尾數的二進制編碼表示更多的有效數字,同時使浮點數有統(tǒng)一的表示形式,通常,浮點數采用規(guī)格化形式來表示。

浮點數的規(guī)格化就是將尾數的絕對值限定在一個規(guī)定的數值范圍內。當基值為2時,規(guī)格化浮點數尾數的絕對值應在1/2~1之間。要使尾數的絕對值在此范圍內,通過改變小數點的位置(相應地改變階碼)便可以做到。若尾數M用補碼表示,當M≥0時,則規(guī)格化尾數的形式必須為

M=0.1××××…×

(2-14)

式(2-14)中,×為任意二進制值,0或1皆可。

當M<0時,規(guī)格化尾數的形式必須為

M=1.0××××…×

(2-15)

同樣,式(2-15)中,×為任意二進制值,0或1皆可。根據規(guī)格化浮點數的定義,可以得到規(guī)格化尾數的數值范圍如下:

尾數的最小負值為-1,尾數的最大負值為-(1/2+2-n);

尾數的最小正值為+1/2,尾數的最大正值為+(1-2-n)。

對于規(guī)格化浮點數來說,其階碼所表示的數值范圍與非規(guī)格化浮點數是一樣的。因此,可以確定規(guī)格化浮點數所能表示的數值范圍如圖2.7所示。圖2.7規(guī)格化浮點數的數值范圍比較圖2.6和2.7,可以發(fā)現(xiàn)非規(guī)格化浮點數和規(guī)格化浮點數所能表示的數值范圍主要不同是絕對值最小的有效數值。由圖2.7可見,規(guī)格化浮點數的數值范圍如下:對于浮點數,可有多種表示方案。假定階碼為7位(含階符1位)并用移碼表示,尾數為9位(含數符1位)并用補碼表示,則該浮點數所能表示的數值范圍是:

-263

~+(1-2-8)×263

3)規(guī)格化

浮點數在進行運算前和運算后,必須對其尾數規(guī)格化,使其成為規(guī)格化數。當尾數不是規(guī)格化數時,就要通過修改階碼并同時左右移尾數使其變成規(guī)格化數。將非規(guī)格化數轉換成規(guī)格化數的過程叫做規(guī)格化。對于基數不同的浮點數,因其規(guī)格化數的形式不同,規(guī)格化過程也不同。

4)定點數和浮點數的比較

(1)當浮點計算機和定點計算機中數據的位數相同時,浮點數的表示范圍比定點數大得多。

(2)當浮點數為規(guī)格化數時,其精度遠比定點數高。

(3)浮點數運算要分階碼部分和尾數部分,而且運算結果要求規(guī)格化,故浮點運算步驟比定點運算步驟多,運算速度比定點低,運算電路比定點復雜。

(4)在溢出的判斷方法上,浮點數是對規(guī)格化數的階碼進行判斷,而定點數是對數值本身進行判斷。

例2.6將十進制數X=+13/128寫成二進制定點數和浮點數(尾數數值部分取7位,階碼數值部分取7位,階符和數符各取1位,階碼采用移碼,尾數用補碼表示),分別寫出該數的定點數和浮點數的表示形式。

解令x=+13/128,

其二進制形式:

X=0.0001101;

定點數真值表示:

X=0.0001101;

規(guī)格化浮點數真值表示:

X=0.1101000×2-11;

定點數編碼表示:[X]原=[X]補=[X]反=0.00011011;

規(guī)格化浮點數編碼表示如圖2.8所示。圖2.8例2.6中浮點數的表示形式

例2.7設浮點數字長為16位,其中階碼為6位(含1位階符),尾數為10位(含1位數符),階碼用移碼,尾數用補碼,寫出X=-(53/512)對應的規(guī)格化浮點數。

X=-(53/512)=-0.000110101=2-11×(-0.110101000)

尾數的規(guī)格化補碼編碼為1.001011000,階碼的移碼編碼為011101。

該數的另一種浮點數表示形式如圖2.9所示。圖2.9例2.7中浮點數的表示形式

3.IEEE-754標準

1)工業(yè)標準754概述

IEEE-754規(guī)定了單精度和雙精度兩種基本的浮點格式以及雙精度擴展等多種浮點格式。常用的IEEE-754格式參數如表2.2所示。

IEEE-754標準的表示形式如下:

(2-16)

2)單精度格式

(1)格式。這里僅介紹最基本的IEEE-754標準的單精度格式,如圖2.10所示。圖2.10

IEEE-754單精度浮點數的格式值得強調的是,IEEE-754中階碼采用移碼,正如表2.2所示,對單精度浮點數來說,移碼的偏移量不是前面所提到的27(+128)而是(27-1)即+127。同時,規(guī)定尾數用原碼表示,規(guī)格化編碼時b0必須為1而且應隱去。有關IEEE-754標準的單精度格式的詳細規(guī)定見表2.3。

(2)說明。根據上述描述,可以得到IEEE-754標準的單精度浮點數的結論:

①由于規(guī)定E=e-127,并且0<e<255(即規(guī)定e在+1~+254內為正規(guī)數),故階碼E的正常值應為真值-126~+127。

②規(guī)格化數為

N=(-1)s×2e-127×(1.f)

(2-17)③所能表示的正數范圍:

+2+127×(1+1-2-23)~+2-126×(1+0);

所能表示的負數范圍:

-2+127×(1+1-2-23)~-2-126×(1+0)。

④當e=0或e=255時,在IEEE-754標準中表示特殊的數。

(3)舉例。為了說明IEEE-754浮點數的應用,現(xiàn)舉例如下。

例2.8利用IEEE-754標準將十進制數176.0625表示為單精度浮點數。

解首先將該十進制數轉換成二進制數:

(176.0625)10=(10110000.0001)2

對二進制數規(guī)格化:

10110000.0001=1◆01100000001×27

這就保證了使b0為1,而且小數點在◆位置上。將b0去掉并擴展為單精度浮點數所規(guī)定的23位尾數:

01100000001000000000000。再來求階碼?,F(xiàn)指數為7即真值,而單精度浮點數規(guī)定指數的偏移量為127(請注意不是2.1.1節(jié)移碼編碼描述中所提到的128),即在指數7上加127,也就是

e=7+127=134

即指數的移碼表示為

[e]移=00000111+01111111=10000110

最后,將(176.0625)10表示為IEEE-754標準的單精度浮點數:

0

10000110

01100000001000000000000

3)雙精度浮點數的說明

這里簡要說明IEEE-754標準雙精度浮點數。

①階碼e的正常值應為真值-1022~+1023,偏移+1023,即e為+1~+2046。

②規(guī)格化數為

N=(-1)s×2e-1023×(1.f)

(2-18)

③所能表示的正數范圍:

+2+1023×(1+1-2-52)~+2-1022×(1+0);

所能表示的負數范圍:

-2+1023×(1+1-2-52)~-2-1022×(1+0)。

④當e=0或e=2047時,在IEEE-754標準中表示特殊的數。2.1.3

BCD碼

1.有權碼

1)定義

含確定權值的BCD編碼有多種方案,列于表2.4中。

2)運算

計算機是以二進制進行運算的,當進行BCD數運算時,運算的結果有可能出現(xiàn)未定義的非法數據,這必然導致結果的錯誤。要保證結果正確,則需要對運算的結果進行校正。

例2.9求兩個8421BCD數49+24=?

解在計算機中,處理器是用二進制加法器對兩個8421BCD碼進行相加的,相加過程列式如下:

2.無權碼

在1位十進制數對應的4位二進制編碼中,二進制各位沒有確定的權值,這種BCD碼稱為無權碼。常見的無權碼如表2.5所示。

2.2非數值數據的編碼

2.2.1

ASCII碼

ASCII碼采用7個二進制位對字符進行編碼,低4位組

d3d2d1d0用作行編碼,高3位組d6d5d4用作列編碼,可表示128個符號,其格式如圖2.11所示,編碼見表2.6。圖2.11

ASCII碼的構成格式2.2.2漢字編碼

1.漢字輸入編碼

漢字輸入編碼是研究最多的,方案有數百種之多。根據其特點,這些方案可以歸結為下列幾種類型。

1)漢字拼音編碼

2)漢字字形編碼

3)漢字直接數字編碼

4)整字編碼

5)手寫輸入

6)語音輸入

2.國標碼和漢字內碼

1)國標碼

2)漢字內碼

3)漢字區(qū)位碼

4)編碼間的關系

5)其他標準

3.漢字字模碼

當漢字需要在屏幕上顯示或需要在打印機上打印時,需要將機內碼轉換成漢字字形碼。它是表示漢字字形的字模數據,通常用點陣、矢量函數等方式表示。

1)點陣字模

2)矢量字模

2.3檢錯與糾錯碼

2.3.1奇偶校驗碼

最簡單且應用廣泛的檢錯碼是采用一位校驗位的奇偶校驗。

1.水平奇偶校驗

水平奇偶校驗就是對每一個數據的編碼添加校驗位,使信息位與校驗位處于同一編碼中。

1)水平奇校驗

設數據X=x0x1…xn-1是一個n位字,若在其高位前增加1位奇校驗位c,則包括奇校驗位的數據就變成了X′=cx0x1…xn-1。奇校驗定義為

(2-19)

式中⊕代表按位加。之所以稱為奇校驗,是因為必須保證數據(包括奇校驗位在內)的n+1位中,1的個數為奇數。奇校驗位c可按如下運算獲得:

(2-20)

也就是說,奇校驗位應為數據X=x0x1…xn-1各位模2加的結果取反。

2)水平偶校驗

偶校驗的概念與奇校驗是一樣的,就是加上偶校驗后,必須保證數據(包括偶校驗位在內)的n+1位中,1的個數為偶數。也即必須保證:

(2-21)

在將數據X=x0x1…xn-1加上偶校驗時,可利用下式求出偶校驗位c:

(2-22)

也就是說,偶校驗位等于數據各位的模2加。

2.垂直奇偶校驗碼

這種校驗碼把數據分成若干組,一組數據占一行,排列整齊,針對每一列采用奇校驗或偶校驗,再加一行校驗碼。

例2.10對于32位數據10100101001101101100110010101011,其垂直奇校驗和垂直偶校驗如表2.7所示。

3.水平垂直校驗碼

在垂直校驗碼的基礎上,對每個數據再增加一位水平校驗位,便構成水平垂直校驗碼。

例2.11對于32位數據10100101001101101100110010101011,其水平垂直奇校驗和偶校驗如表2.8所示。2.3.2海明碼

在計算機運行過程中,由于種種原因致使數據在存儲過程中可能出現(xiàn)差錯。為了能及時發(fā)現(xiàn)錯誤并及時糾正錯誤,通常將原數據配成海明編碼。

海明碼具有一位糾錯能力。由編碼糾錯理論得知,任何一種編碼是否具有檢錯能力和糾錯能力,與編碼的最小距離有關。所謂編碼最小距離,是指在一種編碼系統(tǒng)中,任意兩組

合法代碼之間的最少二進制位數的差異。根據糾錯理論得:

L-1=D+C且D≥C

(2-23)設欲檢測的二進制代碼為n位,為使其具有糾錯能力,須增添k位檢測位,組成n+k位的代碼。為了能準確地對錯誤進行定位以及指出代碼無錯,新增添的檢測位數k應滿足:

2k≥n+k+1(2-24)

由此關系可求得不同代碼長度n所需檢測位的位數k,如表2.9所示。

k的位數確定后,設定它們在被傳送代碼中的位置及它們的取值,便可由它們來承擔檢測任務。

下面首先解釋海明碼的產生及譯碼過程。

例2.12假如8位數據如下:為計算Pi,首先假定H0~H3均為0,利用表2.10所給出

的校驗方程的虛線右邊部分計算出P0~P3如下:這樣,就求出了P0~P3的值。用H0、H1、H2、H3代替求出的P值,則海明碼校驗位就得到了,它們分別為:圖2.12糾錯電路原理圖2.3.3循環(huán)冗余校驗碼

1.概述

循環(huán)冗余校驗(CRC)碼可以發(fā)現(xiàn)并糾正信息在存儲或

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論