




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
3.2.3定點數(shù)和浮點數(shù)
計算機中的兩種表示方式數(shù)值范圍:一種數(shù)據(jù)類型所能表示的最大值和最小值數(shù)據(jù)精度:實數(shù)所能表示的有效數(shù)字位數(shù)。數(shù)值范圍和數(shù)據(jù)精度均與使用多少位二進制位數(shù)以及編碼方式有關(guān)。計算機用數(shù)字表示正負,隱含規(guī)定小數(shù)點。采用“定點”、“浮點”兩種表示形式。11.數(shù)的定點表示方法(1).定點整數(shù)——小數(shù)點位置固定在數(shù)的最低位之后
如:Dn-1Dn-2??????D1D0
.范圍:
2n-1-1
~
-2n-1(采用字長n=16位補碼時其值為32767~-32768)(2).定點小數(shù)——小數(shù)點位置固定在數(shù)的符號位之后、數(shù)值最高位之前。如:D0.
D-1??????D-(n-2)D-(n-1)范圍:1-2-(n-1)~-1
(采用字長n=16位時其值為32767/32768~-1)其中n表示字長多少位2(1)浮點數(shù)的表示:是把字長分成階碼和尾數(shù)兩部分。其根據(jù)就是:①JEm-2…….E0S
D-1……D-(n-1)
階符階碼值數(shù)符.尾數(shù)值
②SJEm-2…….E0D-1……D-(n-1)數(shù)符階符階碼值.尾數(shù)值
通常,階碼為補碼或移碼定點整數(shù),尾數(shù)為補碼或原碼定點小數(shù)。2.數(shù)的浮點表示方法3(2)浮點數(shù)的規(guī)格化目的:字長固定的情況下提高表示精度的措施:1
增加尾數(shù)位數(shù)(但數(shù)值范圍減?。?
采用浮點規(guī)格化形式4規(guī)格化方法:調(diào)整階碼使尾數(shù)滿足下列關(guān)系:尾數(shù)為原碼表示時,無論正負應(yīng)滿足1/2<|d|<1即:小數(shù)點后的第一位數(shù)一定要為1。 正數(shù)的尾數(shù)應(yīng)為0.1x….x 負數(shù)的尾數(shù)應(yīng)為1.1x….x尾數(shù)用補碼表示時,小數(shù)最高位應(yīng)與數(shù)符符號位相反。 正數(shù)應(yīng)滿足1/2≦d<1,即0.1x….x 負數(shù)應(yīng)滿足-1/2>d≥-1,即1.0x….x5例題:設(shè)某機器用32位表示一個實數(shù),階碼部分8位(含1位階符),用定點整數(shù)補碼表示;尾數(shù)部分24位(含數(shù)符1位),用規(guī)格化定點小數(shù)補碼表示,基數(shù)為2。則:1.求X=256.5的第一種浮點表示格式X=(256.5)10=+(100000000.1)2=+(0.1000000001x2+9)28位階碼為:(+9)補=0000100124位尾數(shù)為:(+0.1000000001)補
=0.10000000010000000000000所求256.5的浮點表示格式為:00001001
010000000010000000000000用16進制表示此結(jié)果則為:(09402000)166
Y=-(256.5)10=-(100000000.1)2
=-0.1000000001x2+98位階碼為:(+9)補=0000100124位尾數(shù)為:(-0.1000000001)補=1.01111111110000000000000所求-256.5的浮點表示格式為:00001001
101111111110000000000000用16進制表示此結(jié)果則為:(09BFE000)162.求Y=-256.5的第一種浮點表示格式7(3)溢出問題定點數(shù)的溢出——根據(jù)數(shù)值本身判斷浮點數(shù)的溢出——根據(jù)規(guī)格化后的階碼判斷上溢——浮點數(shù)階碼大于機器最大階碼——中斷下溢——浮點數(shù)階碼小于機器最小階碼——零處理溢出的具體判斷方法將結(jié)合實例在后續(xù)課程中介紹8微機中所能表示的數(shù)值類型(1)無符號二進制數(shù)(字節(jié)、字和雙字)(2)帶符號的二進制定點整數(shù)形式(16、32、64位補碼表示)和18位BCD碼整數(shù)形式(80bit)。(3)浮點數(shù)(IEEE754標準)包括數(shù)符S、階碼E和尾數(shù)D三個字段。9微機中的四種整數(shù)類型整數(shù)類型數(shù)值范圍精度格式16位整數(shù)-32768~32767二進制16位補碼表示短整數(shù)-231~231-1二進制32位補碼表示長整數(shù)-263~263-1二進制64位補碼表示BCD整數(shù)-1018+1~1018-1十進制18位80個二進制其中最左面1字節(jié)的最高位是符號位,余7位無效;另外72位是18位BCD碼,原碼表示。10IEEE754標準格式如下(-1)S2E(D0.D-1……D-(P-1))最高是數(shù)符S占1位,0表示正、1表示負;指數(shù)項E,基數(shù)是2,E是一個帶有一定偏移量的無符號整數(shù);尾數(shù)部分D,它是一個帶有一位整數(shù)位的二進制小數(shù)真值形式。其規(guī)格化形式應(yīng)調(diào)整階碼使其尾數(shù)整數(shù)位D0為1且與小數(shù)點一起隱含掉。1112微機中浮點數(shù)表示成規(guī)格化形式,如下圖所示:
單精度313023220符號位階碼尾數(shù)有效位
1·雙精度636252510符號位階碼尾數(shù)有效位
1·擴展精度797864630符號位階碼尾數(shù)有效位
微機中浮點數(shù)的三種表示形式
13例如將十進制數(shù)178.125表示成微機中的單精度浮點數(shù)解:178.125=10110010.001B=1.0110010001x27
指數(shù)E=7+127=134=10000110B127是單精度浮點數(shù)應(yīng)加的指數(shù)偏移量,其完整的浮點數(shù)形式為:01000011001100100010000000000000=43322000H
14例:將下面Pentium機中的單精度浮點數(shù)表示成十進制真值是多少?
0011,1111,0101,1000,0000,0000,0000,0000數(shù)符:S=(-1)0=1(正號)階碼:E=(01111110)2-127=126-127=-1尾數(shù):D=(1.1011)2X=1.1011x2-1=(0.11011)2=0.84375153.2.4數(shù)字化信息的編碼及表示計算機進行數(shù)據(jù)處理和運算,就必須首先實現(xiàn)數(shù)字化表達。另外由于計算機除了數(shù)據(jù)處理和運算外,還要進行各種文字(特別是中文)的處理與編輯。因此,所有由計算機處理的信息也要用數(shù)字進行編碼。這樣在物理機制上可以以數(shù)字信號表示.16信息的數(shù)字化表示形式數(shù)字信號:是一種在時間上或空間上離散的信號,單個信號是常用的二值邏輯(0或1),依靠多位信號組合表示廣泛的信息.171.用一串脈沖信號表示數(shù)字代碼
(先發(fā)低位后發(fā)高位為例)10110tU182.用一組電平信號表示數(shù)字代碼0tU10tU10tU00tU119
3.用一組數(shù)字代碼表示字符(如ASCII碼)4.用若干點的組合表示圖像(如圖形點陣碼)5.用數(shù)字信號表示聲音(如VCDDVD光盤)6.用數(shù)字代碼表示命令與狀態(tài)20數(shù)字化方法表示信息的優(yōu)點:抗干擾能力強,可靠性高;位數(shù)增多則數(shù)的表示范圍可擴大;物理上容易實現(xiàn),并可存儲;表示信息的范圍與類型極其廣泛;能用邏輯代數(shù)等數(shù)字邏輯技術(shù)進行處理.213.3二進制乘法運算1.軟件編程方法實現(xiàn)(時序控制乘法器)
由手算到機器實現(xiàn),要解決三個問題:符號問題、部分積相加進位問題、移位問題。原碼乘法是先取絕對值相乘,再根據(jù)同號相乘為正、異號相乘位負,單獨決定符號位。補碼乘法則讓符號位直接參加運算,算法將會復(fù)雜一些。2.硬件快速乘法器實現(xiàn)
利用中大規(guī)模集成電路芯片,在一拍節(jié)中實現(xiàn)多項部分積的相加,成為陣列乘法器。
223.3.1定點數(shù)一位乘法
1.定點原碼一位乘規(guī)則:在機器中采用A,B,C寄存器來分別存放部分積,被乘數(shù)和乘數(shù)
(1)在機器內(nèi)一次加法操作只能求出兩數(shù)之和,因此每求得一個相加數(shù)時,就得與上次部分積相加。(2)人工計算時,相加數(shù)逐次向左偏移一位,由于最后的乘積位數(shù)是乘數(shù)(或被乘數(shù))的兩倍.由于在求本次部分積時,前一次部分積的最低位,不再參與運算,因此可將其右移一位。相加數(shù)可直送而不必偏移,于是用N位加法器就可實現(xiàn)兩個N位數(shù)相乘。(3)部分積右移時乘數(shù)寄存器同時右移一位,這樣可以用乘數(shù)寄存器的最低位來控制相加數(shù)(取被乘數(shù)或零),同時乘數(shù)寄存器的最高位可接收部分積右移出來的一位,因此,完成乘法運算后,A寄存器中保存乘積的高位部分,乘數(shù)寄存器C中保存乘積的低位部分。23例:設(shè)X=0.1101,Y=0.1011,求X?Y.其中寄存器B=X,Cd=4.流程圖3.6計算過程如下:00000010110011010011010001101101001101010011001001111000000000100100010011110011010100010010001111+x右移一位→+x右移一位→+0右移一位→+x右移一位→部分積A乘數(shù)C乘積高位乘積低位1(丟失)1(丟失)0(丟失)1(丟失)X?Y=0.1000111124
注意:兩操作數(shù)的絕對值相乘,符號位單獨處理。寄存器A.B均設(shè)置雙符號位,第1符號位始終是部分積符號,決定在右移時第1符號位補0操作步數(shù)由乘數(shù)的尾數(shù)位數(shù)決定,用計數(shù)器Cd來計數(shù)。即作n次累加和移位。最后是加符號位,根據(jù)Sx⊕Sy決定。252.定點補碼一位乘法
實現(xiàn)補碼乘法有兩種方法,現(xiàn)在廣泛使用的是Booth算法,也稱為比較法。這種方法在機器實現(xiàn)中要在乘數(shù)末位Yi之后再增加一個附加位Yi+1,并令其初始值為0。然后根據(jù)比較Yi、Yi+1的值決定下一步操作,規(guī)則如下:(部分積初始為0)YiYi+1操作00原部分積右移一位01原部分積加X補后再右移一位10原部分積加[-X補]后再右移一位11原部分積右移一位26例3.35:設(shè)X=-0.1101,Y=0.1011,即[X]補=11.0011,[Y]補=0.1011,[-X]=00.1101求[X?Y]補.計算過程如下:0000000.10110初始值,最后一位補0001101Y5Y4=01+[-X]補001101000110101011右移一位000000Y4Y3=11+0000110000011010101右移一位110011Y3Y2=10+[X]補110110111011001010右移一位001101Y2Y1=01+[-X]補001000000100000101右移一位110011Y1Y0=10+[X]補1101110001+→+→+→+→+部分積乘數(shù)YYiYi+1說明乘積高位乘積低位[X?Y]補=1.01110001,X?Y=-0.1000111127
初始值與符號位:A寄存器存放部分累加和,初始為0,采用雙符號位。第1符號位指示累加和的正負,以控制右移時補0或補1。B中存放被乘數(shù)的補碼,雙符號位?;静僮鳎河肅寄存器最末兩位作判斷位,決定下一步的操作。移位:在右移時,第2符號位值移入位數(shù)的最高位,第1符號位值不變且移入第2符號位,而A寄存器末位移入C寄存器。步數(shù)與最后一步操作:乘數(shù)有效位是4位,共作5步。注意,最后一步不移位因為這一步是用來處理符號位的。
283.4.1定點除法運算
1.定點原碼一位除法
有恢復(fù)余數(shù)法和不恢復(fù)余數(shù)法(加減交替法),計算機中常用后者。因為它的操作步驟少,而且也不復(fù)雜。其處理思想是:先減后判,如減后發(fā)現(xiàn)不夠減,則在下一步改作加除數(shù)操作。這樣操作步驟固定易于編程。其要點如下:(1)要求被除數(shù)|X|<除數(shù)|Y|,并取原碼尾數(shù)的絕對值相除;符號位單獨處理,商的符號為相除兩數(shù)符號的半加和。(2)被除數(shù)的位數(shù)可以是除數(shù)的兩倍,其低位的數(shù)值部分開始時放在商寄存器中。運算中,放被除數(shù)和商的A、C寄存器同時移位,并將商寄存器C中最高位移到被除數(shù)寄存器A的最低位中。(3)每步操作后,可根據(jù)余數(shù)Ri符號來判斷是否夠減:Ri位正表明夠減,上商Q為1。Ri為負表明不夠減,上商Q為0。(4)基本操作可用通式描述為:Ri=2Ri+(1-2Qi)Y
(5原碼除的思想是先當(dāng)成正數(shù)相除,若最后一步所得余數(shù)為負,則應(yīng)恢復(fù)余數(shù),但不移位,以保持Ri為正。舉例如下:29例3.39:設(shè)被乘數(shù)X=0.1011,Y=0.1101,用加減交替法求X/Y.
[-Y]補=11.0011,計算過程如下:00101100000開始情形110011+[-Y]補11111000000不夠減,商上011110000000左移001101+Y00100100001夠減,商上101001000010左移110011+[-Y]補00010100011夠減,商上100101000110左移110011+[-Y]補11110100110不夠減,商上011101001100左移001101+Y00011101101夠減,商上1+)+)+)+)+)被除數(shù)(余數(shù)R)(被除數(shù))(商)操作說明余數(shù)商X/Y=0.1101,余數(shù)=0.011130
A寄存器中開始時存放被除數(shù)的絕對值,以后將存放各次余數(shù),取雙符號位。B寄存器存放除數(shù)的絕對值,取雙符號位。C寄存器同來存放商,取單符號位。第一步操作:將被除數(shù)X視為初始余數(shù)R0,根據(jù)R0符號位正(絕對值),令商符為0,正是的商符以后再置入。第一步為-Y。商值則根據(jù)余數(shù)R0的符號來決定,正則商上1,求下一位商的辦法是余數(shù)左移一位再減去除數(shù);當(dāng)余數(shù)為負則商上0,求下一位商的辦法是余數(shù)左移一位再加上除數(shù)。左移位時末位補0。操作步數(shù)與最后一步操作:如果要求得n位商(不含符號位),則需作n步“左移-加減”循環(huán);若第n步余數(shù)為負,則需增加一步恢復(fù)余數(shù),這增加的一步不移位。312.定點補碼一位除法(加減交替法)補碼除法規(guī)則表:X補、Y補、r補分別為被除數(shù)、除數(shù)和余數(shù)
X補Y補數(shù)符商符第一步操作r補Y補數(shù)符
上商下一步操作同號0減法同號(夠減)異號(不夠減)
102[ri]補--Y補2[ri]補+Y補異號1
加法同號(不夠減)異號(夠減)
102[ri]補--Y補2[ri]補+Y補32
以上是在|X|<|Y|即不溢出的前提下;(1)第一步如果被除數(shù)與除數(shù)同號,用被除數(shù)減去除數(shù);若兩數(shù)異號,用被除數(shù)加上除數(shù)。如果所得余數(shù)與除數(shù)同號上商1,若余數(shù)與除數(shù)異號,上商0,該商即為結(jié)果的符號位。(2)求商的數(shù)值部分如果上次上商1,將余數(shù)左移一位后減去除數(shù);如果上次上商0,將余數(shù)左移一位后加上除數(shù)。然后判斷本次操作后的余數(shù),如果余數(shù)與除數(shù)同號上商1;若余數(shù)與除數(shù)異號上商0。如此重復(fù)執(zhí)行n-l次(設(shè)數(shù)值部分有n位)。(3)商的最后一位一般采用恒置1的辦法,井省略了最低位+1的操作,此時最大誤差為士2-n.如果對商的精度要求較高則可按規(guī)則(2)再進行一次操作以求得商的第n位。當(dāng)除不盡時若商為負,要在商的最低一位加1,使商從反碼值轉(zhuǎn)變成補碼值;若商為正最低位不需要加1。33例3.40:設(shè)[X]補=1.0111,[Y]補=0.1101,求[X/Y]補.
[-Y]補=11.0011,計算過程如下:[X/Y]補=1.010111011100000開始情形001101兩數(shù)異號+[Y]補?書00010000001余數(shù)與除數(shù)同號,商上100100000010左移110011上次商1,+[-Y]補11101100010余數(shù)與除數(shù)異號,商上011011000100左移001101上次商0,+[-Y]補00001100101余數(shù)與除數(shù)同號,商上100011001010左移110011上次商1,+[-Y]補11100101010余數(shù)與除數(shù)異號,商上011001010101左移,商的最低位恒置1+)+)+)+)被除數(shù)(余數(shù))商操作說明余數(shù)商34
例3.40最低位恒置1,余數(shù)不正確。A寄存器存放被除數(shù)(補碼),以后存放余數(shù),取雙符號位。B寄存器存放除數(shù)(補碼),雙符號位。C寄存器存放商,初始值為0(未考慮商符之前),單符號位。如余數(shù)為0,則表示除盡。例3.41如采用商的最低位恒置1的方法,其誤差為2-n=2-4。補碼除法規(guī)則表補充說明:1、表中i=0~n-1.2、上采用末位恒置1的方法,操作簡便。如要提高精度,則要提高精度,則按上述規(guī)則多求一位,再采用以下方法對商進行處理:兩數(shù)能除盡時,如除數(shù)為正,商不必加2-n,如除數(shù)為負,商加2-n;兩數(shù)除不盡時,如商為正,商不必加2-n,如商為負,商加2-n。35
例3.42[X]補=1.0111,[Y]補=1.0011,則[-Y]補=0.1101。求[X/Y]補=?被除數(shù)(余數(shù))商操作說明11。0111+00。1101兩數(shù)同號,+[-Y]補00。01000余數(shù)與除數(shù)異號,商0左移00。1000+11。0011+[Y]補11。101101同號,商1左移11。0110+00。1101+[-Y]補00。0011010異號,商0左移00。0110+11。0011+[Y]補11。10010101同號,商1左移11。0010+00。1101+[-Y]補11。111101011同號,商1[X/Y]補=0.1011[余數(shù)]補=1。1111x2-4
363.5浮點數(shù)的運算方法浮點數(shù)的表示形式(以2為底):N=M·2E其中,M為浮點數(shù)的尾數(shù),一般為絕對值小于1的規(guī)格化二進制小數(shù)用原碼或補碼形式表示;E為浮點數(shù)的階碼,一般是用移碼或補碼表示的整數(shù)。階碼的底除了2以外,還有用8或16表示的,這里先以2為底進行討論。然后再簡介以8或16為底的數(shù)的運算。371.加、減法運算兩數(shù)首先均為規(guī)格化數(shù),在進行規(guī)格化浮點數(shù)的加減運算需經(jīng)過五步完成:對階操作:低階向高階補齊,使階碼相等;尾數(shù)運算:階碼對齊后直接對尾數(shù)運算;結(jié)果規(guī)格化:對運算結(jié)果進行規(guī)格化處理;(使補碼尾數(shù)的最高位和尾數(shù)符號相反)如溢出則需左規(guī),如不是規(guī)格化時應(yīng)右規(guī)。舍入操作:丟失位進行0舍1入或恒置1處理;判斷溢出:判斷階碼是否溢出,下溢則將運算結(jié)果置0,上溢則中斷。38具體說明如下:
對階運算(小階向大階對齊)尾數(shù)為原碼時,尾數(shù)右移,符號位不動,最高位補0尾數(shù)為補碼時,尾數(shù)右移,符號也移位,最高位補符號位例如:求 =?小階對大階舍掉的是如大階對小階則舍掉的是39
規(guī)格化:原碼尾數(shù)高位為1,補碼與符號相反舍入操作:0舍1入或恒置1例1:求 =?0舍1入后為恒置1例2:求=?0舍1入后為恒置1判斷結(jié)果的正確性(即結(jié)果的階碼是否溢出)40例:假設(shè)
其中指數(shù)和小數(shù)均為二進制真值,求X+Y=?其階碼4位(含階符),補碼表示;尾數(shù)6位,補碼表示,尾數(shù)符號在最高位,尾數(shù)數(shù)值5位。解:尾符階碼尾數(shù)5位[X]浮=0001011010[Y]浮=1001100010對階[X]浮=0001101101尾數(shù)求和00.01101+11.00010=11.01111[X]浮+[Y]浮=1001101111規(guī)格化、舍入操作、階碼溢出判斷,最后: [X+Y]真=41例:假設(shè)其中指數(shù)和小數(shù)均為二進制真值,求X-Y。其階碼4位(含階符),補碼表示;尾數(shù)6位,補碼表示,尾數(shù)符號在最高位,尾數(shù)數(shù)值5位
解:尾符階碼尾數(shù)[X]浮=0001011010[Y]浮=1001100010對階[X]浮=0001101101尾數(shù)求差:[X尾-Y尾]補=[X尾]補+[-Y尾]補=00.01101+00.11110=01.01011規(guī)格化處理、舍入操作均不需要,階碼溢出檢查:尾數(shù)符號位為01,尾數(shù)發(fā)生上溢出,做規(guī)格化處理尾數(shù)連同符號右移一位00.101011,階碼加1至0100舍入操作恒置1后:[X]浮-[Y]浮=0010010101
[X-Y]真=
423.5.2浮點數(shù)的乘、除法運算兩浮點數(shù)相乘其乘積的階碼為相乘兩數(shù)階碼之和,其尾數(shù)應(yīng)為相乘兩數(shù)的尾數(shù)之積。兩個浮點數(shù)相除,商的階碼為被除數(shù)的階碼減去除數(shù)的階碼得到的差,尾數(shù)為被除數(shù)的尾數(shù)除以除數(shù)的尾數(shù)所得的商。參加運算的兩個數(shù)都為規(guī)格化浮點數(shù),乘除運算都可能出現(xiàn)結(jié)果不滿足規(guī)格化要求的問題,因此也必須進行規(guī)格化、舍入和判溢出等操作。規(guī)格化時要修改階碼。43
.浮點數(shù)乘法運算(階碼的底為8或16)前面的討論,是以階碼值的底為2來進行的。為了用相同位數(shù)的階碼表示更大范圍的浮點數(shù),在一些計算機中也有選用階碼的底為8或16的。此時浮點數(shù)N被表示成N=8E·M或N=16E·M階碼E和尾數(shù)M還都是用二進制表示的,其運算規(guī)則與階碼以2為底基本相同,但關(guān)于對階和規(guī)格化操作有新的相應(yīng)規(guī)定。當(dāng)階碼以8為底時,只要尾數(shù)滿足1/8≤M<l或一1≤M〈一1/8就是規(guī)格化數(shù)。執(zhí)行對階和規(guī)格化操作時,每當(dāng)階碼的值增或減1,尾數(shù)要相應(yīng)右移或左移三位。當(dāng)階碼以16為底時,只要尾數(shù)滿足1/16《M<1或一1《M<一1/16就是規(guī)格化數(shù)。執(zhí)行對階和規(guī)格化操作時,階碼的值增或減1,尾數(shù)必須移四位。判別為規(guī)格化數(shù)或?qū)崿F(xiàn)規(guī)格化操作,均應(yīng)使數(shù)值的最高三項(以8為底)或四位(以16為底)中至少有一位與符號位不同。5浮點數(shù)除法運算步驟與乘法運算類似,也分求商的階碼、尾數(shù)相除、規(guī)格化、舍入和判溢出5個步驟,不再詳細討論。443.6運算部件
1.定點運算部件定點運算部件由算術(shù)邏輯運算部件ALU、若干個寄存器、移位電路、計數(shù)器、門電路等組成。ALU部件主要完成加減法算術(shù)運算及邏輯運算(其功能可參考242節(jié)),其中還應(yīng)包含有快速進位電路。2.浮點運算部件通常由階碼運算部件和尾數(shù)運算部件組成。其各自的結(jié)構(gòu)與定點運算部件相似。但階碼部分僅執(zhí)行加減法運算。其尾數(shù)部分則執(zhí)行加減乘除運算,左規(guī)時有時需要左移多位。為加速移位過程,有的機器設(shè)置了可移動多位的電路。453.7計算機中的數(shù)據(jù)校驗方法
采用冗余校驗方法:即在基本的有效數(shù)據(jù)外,再擴充部分位,增加部分(冗余部分)被稱為校驗位。將校驗位與數(shù)據(jù)位一起按某種規(guī)則編碼,寫入存儲器或向外發(fā)送。當(dāng)從存儲器讀出或接收到外部傳入的代碼時,再按相應(yīng)的規(guī)則進行判讀。若約定的規(guī)則被破壞,則表示出現(xiàn)錯誤。根據(jù)錯誤的特征進行修正恢復(fù)。46幾個名詞概念:碼字:由若干代碼組成的一個字。如8421碼中6(0110),7(0111)碼距:一種碼制中任意兩個碼字間的最小距離。距離:兩個碼字之間不同的代碼個數(shù)。8421碼中,最小的碼距為1,如0000和0001、0010和0011等;最大碼距為4,如0111和1000。8421碼的碼距為1。碼距為1,即不能查錯也不能糾錯。碼距越大,查錯、糾錯能力越強。473.7.1奇偶校驗法
奇偶校驗法是計算機中廣泛采用的檢查傳輸數(shù)據(jù)準確性的方法。奇偶校驗法的原理是:在每組數(shù)據(jù)信息上附加一個校驗位,校驗位的取值(0或1)取決于這組信息中‘1’的個數(shù)和校驗方式(奇或偶校驗)。如果采用奇校驗,則這組數(shù)據(jù)加上校驗碼位后數(shù)據(jù)中‘1’的個數(shù)應(yīng)為奇數(shù)個。如果采用偶校驗,則這組數(shù)據(jù)加上校驗碼位后數(shù)據(jù)中‘1’的個數(shù)應(yīng)為偶數(shù)個。48例如:八位信息‘10101011’中共有5個‘1’,附加校驗位后變?yōu)榫盼?。若采用奇校驗,則附加的校驗位應(yīng)取‘0’值,保證1的個數(shù)為奇數(shù)個即010101011;若采用偶校驗則附加的校驗位應(yīng)取‘1’值即110101011。奇偶校驗的特點:1、奇偶校驗法使數(shù)據(jù)的碼距為2,因而可檢出數(shù)據(jù)傳送過程中奇數(shù)個數(shù)位出錯的情況;2、實際中兩位同時出錯的概率極低,奇偶校驗法簡便可靠易行,但它只能發(fā)現(xiàn)錯誤,卻不知錯在何處,因而不能自動糾正。49偶校驗出錯奇校驗出錯偶形成奇形成D校為校驗位D校D1D2D3D4D5D6D7D88位數(shù)據(jù)的奇偶校驗碼形成電路及檢碼電路503.7.2海明碼校驗方法海明碼校驗方法以奇偶校驗法為基礎(chǔ),其校驗位不是一個而是一組,故其碼距大于2。海明碼校驗方法能夠檢測出具體錯誤并糾正。原理是在數(shù)據(jù)中加入r個校驗位,將數(shù)據(jù)的碼距按照一定規(guī)則拉長。r個校驗位可以表示2r個信息,除一個表示無誤信息外,其余2r-1信息可以用來標明錯誤的具體位置,但由于校驗位本身也可能在傳送中出錯,所以只有2r-1-r個信息可用,即r位校驗碼只可標明2r-1-r個錯誤信息?;?r≧k+r+1k是被傳送數(shù)據(jù)的位數(shù)。
例如:用4個校驗位能可靠傳輸24-1-4=11位信息;而要校驗32位數(shù)據(jù)則需至少6個校驗位。51
如要能檢測與自動校正一位錯井發(fā)現(xiàn)兩位錯此時校驗位的位數(shù)r和數(shù)據(jù)位的位數(shù)k應(yīng)滿足下述關(guān)系:2r-1≧k+r(3.19)按式(3.19),可計算出數(shù)據(jù)位k與校驗位r的對應(yīng)關(guān)系,如教材表3.8所示。52一、編碼方法(以四個校驗位進行說明)
四個校驗位最多可以校驗11位數(shù)據(jù)。設(shè): D10D9D8D7D6D5D4D3D2D1D0為11個數(shù)據(jù)位, P4P3P2P1分別為四個校驗碼,則編碼規(guī)則是:海明碼的總位數(shù)等于數(shù)據(jù)位與校驗位之和;每個校驗位Pi排放在2i-1的位置,例如P4排放在第24-1=8位,其余數(shù)據(jù)位依序排列。即:
D10D9D8D7D6D5D4P4D3D2D1P3D0P2P1海明碼的每一位用多個校驗位一起進行校驗,被校驗的位號等于校驗它的各校驗位位號和;各校驗位的值為它參與校驗的數(shù)據(jù)位的異或。53
海明碼校驗表海明碼位號參與校驗的校驗位位號參與的校驗位H1P11P1H2P22P2H3D02,1(3=2+1)P2P1H4P34P3H5D14,1(5=4+1)P3,P1H6D24,2(6=4+2),P3,P2H7D34,2,1(7=4+2+1)P4,P3,P2,P1H8P48P4H9D48,1(8=8+1)P4,P1H10D58,2(10=8+2)P4,P2H11D68,2,1(11=8+2+1)P4,P2,P1H12D78,4(12=8+4)P4,P3H13D88,4,1(13=8+4+1)P4,P3,P1H14D98,4,2(14=8+4+2)P4,P3,P2H15D108,4,2,1(15=8+4+2+1)P4,P3,P2,P154
各校驗位形成公式:
P1=D0⊕D1⊕D3⊕D4⊕D6⊕D8⊕D10(1)P2=D0⊕D2⊕D3⊕D5⊕D6⊕D9⊕D10(2)P3=D1⊕D2⊕D3⊕D7⊕D8⊕D9⊕D10(3)P4=D4⊕D5⊕D6⊕D7⊕D8⊕D9⊕D10(4)按上述方式Pi的取值是采用偶校驗時的取值,當(dāng)采用奇校驗時,Pi則取反。這樣Pi連同數(shù)據(jù)位一起形成了海明碼的各位。
55二、檢查糾錯(以四個校驗位進行說明)
海明碼數(shù)據(jù)傳送到接收方后,再將各校驗位的值與它所參與校驗的數(shù)據(jù)位的異或結(jié)果進行異或運算。運算結(jié)果稱為校驗和。校驗和共有四個。對偶校驗來說,如果校驗和不為零則傳輸過程中間有錯誤。而錯誤的具體位置則由四個校驗和依序排列后直接指明。如果四個校驗和
S4S3S2S1依序排列后等于(1001)2=(9)10時,就表明海明碼的第九位也就是D4發(fā)生了錯誤,此時只要將D4取反,也就糾正了錯誤。56
校驗和Si的表達式:S1=D0⊕D1⊕D3⊕D4⊕D6⊕D8⊕D10⊕P1
S2=D0⊕D2⊕D3⊕D5⊕D6⊕D9⊕D10⊕P2S3=D1⊕D2⊕D3⊕D7⊕D8⊕D9⊕D10⊕P3S4=D4⊕D5⊕D6⊕D7⊕D8⊕D9⊕D10⊕P4當(dāng)采用偶校驗方式其傳送數(shù)據(jù)正確時,校驗和S1~S4的值分別都為0;當(dāng)采用奇校驗方式其傳送數(shù)據(jù)正確時,校驗和S1~S4的值分別都為1。當(dāng)不為上述值時,傳送就發(fā)生了錯誤。
57解:已知D10D9D8D7D6D5D4D3D2D1D0=10110100110由于被校驗位的位號等于校驗它的各校驗位位號之和以及各校驗位的取值等于它參與校驗的數(shù)據(jù)位取值的異或。所以校驗位的取值以及所求海明碼為: P1=D0D1
D3
D4
D6
D8
D10=1 P2=D0
D2
D3
D5
D6
D9
D10=1 P3=D1
D2
D3
D7
D8
D9
D10=1 P4=D4
D5
D6
D7
D8
D9
D10=0D10D9D8D7D6D5D4P4D3D2D1P3D0P2P1=101101000111011傳送正確時校驗和的值為0,如果不等于0,則是幾就是第幾位出錯,是7則是第7位D3出錯,此時將其取反即可糾正錯誤。例題:采用4位校驗位、偶校驗方式,寫出10110100110的海明碼。58
59
以上圖3.11是H=12,數(shù)據(jù)位k=8,校驗位r=4的海明校驗線路,記作(l2.8)分組碼。圖3.ll中的H12,H11,...,H1是被校驗碼,D8,D7,...,D1是糾正后的數(shù)據(jù)。在線路中,先用奇偶形成線路得到S4,S3,S2,S1,如果S4~S1為全“0”,說明代碼無錯,則D8D7...DI=H12H11H10H9H7H6H5H3。如果S4~S1不為全0,說明有錯
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 標準廠房馬家柚深加工廠房項目可行性研究報告寫作模板-備案審批
- 鐵道配件企業(yè)ESG實踐與創(chuàng)新戰(zhàn)略研究報告
- 健腦益智保健品企業(yè)縣域市場拓展與下沉戰(zhàn)略研究報告
- 機器人視覺追蹤電機行業(yè)深度調(diào)研及發(fā)展戰(zhàn)略咨詢報告
- 白狐皮企業(yè)數(shù)字化轉(zhuǎn)型與智慧升級戰(zhàn)略研究報告
- 木質(zhì)水解酒精企業(yè)數(shù)字化轉(zhuǎn)型與智慧升級戰(zhàn)略研究報告
- 連鎖大藥房企業(yè)縣域市場拓展與下沉戰(zhàn)略研究報告
- 公路人力車旅客運輸企業(yè)數(shù)字化轉(zhuǎn)型與智慧升級戰(zhàn)略研究報告
- 2025年專用改性型氯化聚乙烯項目發(fā)展計劃
- 二零二五年度建材行業(yè)經(jīng)銷商返利合同
- 交通工程安全臺帳
- 人教版四年級數(shù)學(xué)下冊第一單元提升測試卷(Word版含答案)
- Arcgis教程1基本知識
- 學(xué)業(yè)規(guī)劃、職業(yè)發(fā)展與就業(yè)指導(dǎo)課件
- 西南交通大學(xué)文科建設(shè)發(fā)展綱要
- 蘇教版數(shù)學(xué)六年級下冊第三單元《解決問題的策略》課課件
- 四年級數(shù)學(xué)思維訓(xùn)練社團活動(素質(zhì)拓展)電子教案
- 金屬切削過程中的變形 revised課件
- 蒙古族文化課件
- 簡明燒傷健康量表
- 傳染病布氏菌病 課件
評論
0/150
提交評論