運算方法和運算部件乘除及校驗_第1頁
運算方法和運算部件乘除及校驗_第2頁
運算方法和運算部件乘除及校驗_第3頁
運算方法和運算部件乘除及校驗_第4頁
運算方法和運算部件乘除及校驗_第5頁
已閱讀5頁,還剩86頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

運算方法和運算部件乘除及校驗第一頁,共九十一頁,編輯于2023年,星期二23.3.1定點數(shù)一位乘法1.定點原碼一位乘法(1)乘法的運算規(guī)則設x=xf.x1x2…xn,y=yf.y1y2…yn乘積為P,乘積的符號位為Pf,則

Pf=xf⊕yf,|P|=|x|?|y|第二頁,共九十一頁,編輯于2023年,星期二例A=0.1101,B=0.1011,求A*B

0.1101×0.1011

011010110100000011010.10001111筆算法的特點: n位數(shù)相乘,需要將n個位積相加,需要2n位加法器,不能有效利用全加器操作

由手算到機器實現(xiàn),要解決三個問題:符號問題、部分積相加進位問題、移位問題。位積A×BiA*B=0.10001111第三頁,共九十一頁,編輯于2023年,星期二求|P|的運算規(guī)則:位積=第四頁,共九十一頁,編輯于2023年,星期二5原碼一位乘法的算法流程圖:i表示循環(huán)次數(shù)(相加/移位的次數(shù))yn表示乘數(shù)將要被判斷的那一位Pi為部分積第五頁,共九十一頁,編輯于2023年,星期二6符號擴展把一個數(shù)的位數(shù)進行擴充但其真值不變。正數(shù)的符號擴展:最高符號位之前補0(“0”表示正號)。負數(shù)的符號擴展:最高符號位之前補1(“1”表示負號)。例:

[X]補

=10010011,將其擴展成16位補碼,得

[X]補

=1111111110010011例:

[X]補

=00101100,將其擴展成16位補碼,得 [X]補

=0000000000101100第六頁,共九十一頁,編輯于2023年,星期二7

A(部分積累加和)

C(乘數(shù))00.00001011+00.1101___________00.110100.01101101

1+00.1101_______________________01.001100.10011110

1+00.0000_________________________00.100100.01001111

0+00.1101_________________________01.0001

00.10001111

1丟棄項部分積右移加“被乘數(shù)”加“0”寄存器:A:存放部分積累加和、乘積高位B:存放被乘數(shù)C:存放乘數(shù)、乘積低位

A=00.0000(初始值)B=|X|=00.1101C=|Y|=00.1011例3.31X=0.1101,Y=0.1011,求X?Y.計算過程如下:加“被乘數(shù)”第七頁,共九十一頁,編輯于2023年,星期二8

(2)邏輯實現(xiàn)第八頁,共九十一頁,編輯于2023年,星期二9注意:兩操作數(shù)的絕對值相乘,符號位單獨處理。寄存器A.B均設置雙符號位,第1符號位始終是部分積符號,決定在右移時第1符號位補0操作步數(shù)由乘數(shù)的尾數(shù)位數(shù)決定,用計數(shù)器Cd來計數(shù)。即作n次累加和移位。最后是加符號位,根據Xs⊕Ys決定。第九頁,共九十一頁,編輯于2023年,星期二10

補碼乘法不能簡單的套用原碼乘法的算法,因為補碼的符號位是參加運算的。

(1)校正法所謂校正法,將[X]補和[Y]補按原碼運算,所得結果根據情況加以校正,從而得到[XY]補。算法分析:若被乘數(shù)X的符號任意--[X]補

=X0.X1X2……Xn

1)Y為正:[Y]補

=0.Y1Y2……Yn

[XY]補

=X補(0.Y1Y2……Yn)2)Y為負:[Y]補

=1.Y1Y2……Yn

[Y]補=2+Y,真值Y=[Y]補-2=1.Y1Y2…Yn-2=0.Y1Y2……Yn-1

[XY]補

=[X]補(0.Y1Y2……Yn)+[-X]補

3)Y符號任意:[XY]補

=X補[0.Y1Y2……Yn]+[-X]補Y0符號位Y<0,除按1)計算外,另加[-X]補校正直接按原碼乘法運算2、定點補碼一位乘法第十頁,共九十一頁,編輯于2023年,星期二11若例3.33中Y=-0.1011,求[X·Y]補時,需在最后右移1位后,+[-X]補。校正第十一頁,共九十一頁,編輯于2023年,星期二南華大學計算機學院12(2)比較法算法(布斯公式)

校正法在乘數(shù)為負數(shù)時,需要進行校正,控制起來要復雜一些,我們希望有一個對于正數(shù)和負數(shù)都一致的算法,這就是比較法。比較法是英國的Booth夫婦提出來的,因此又稱Booth法。根據校正法的統(tǒng)一表達式:[XY]補=[X]補(0.Y1Y2……Yn)+[-X]補Y0

=[X]補(0.Y1Y2……Yn)-[X]補Y0

=[X]補(-Y0+2-1Y1+2-2Y2+……+2-nYn)

=[X]補[-Y0+(Y1-2-1Y1)+(2-1Y2-2-2Y2)+……+(2-(n-1)Yn-2-nYn)]

=[X]補[(Y1-Y0)+2-1(Y2-Y1)+2-2(Y3-Y2)+……+2-n(Yn+1-Yn)]比較法:用相鄰兩位乘數(shù)比較的結果決定+[X]補、[-X]補或+0。第十二頁,共九十一頁,編輯于2023年,星期二(Booth算法)的運算規(guī)則:位積=(-)第十三頁,共九十一頁,編輯于2023年,星期二14補碼一位乘法算法流程圖:Pi為部分積00或11i表示循環(huán)次數(shù)(相加/移位的次數(shù))第十四頁,共九十一頁,編輯于2023年,星期二15例3.34x=-0.1101,y=-0.1011(書上y為正數(shù)),求[x×y]補=?

解:

[x]補=11.0011,[-x]補=00.1101(雙符號) [y]補=1.0101(單符號)第十五頁,共九十一頁,編輯于2023年,星期二16步數(shù)條件操作

PY

00.00001.01010

1)01[-X]補YiYi+1+00.110100.110100.01101

1.01012)10[X]補+11.001111.100111.1100111.0103)01[-X]補+00.110100.100100.01001111.014)10[X]補+11.001111.011111.101111111.0Yi+1Yi5)01

[-X]補+00.1101

00.10001111[XY]補=0.10001111右移時左邊補0,因為是正數(shù)(根據符號擴展原理)右移時左邊補1,因為是負數(shù)(根據符號擴展原理)第十六頁,共九十一頁,編輯于2023年,星期二17P、X取雙符號位,符號參加運算;Y取單符號位,符號參加移位,以決定最后是否修正;Y末位設置附加位Yi+1,初值為0,Yi+1Yi組成判斷位,決定運算操作;需作n+1次累加,n次移位(最后一次不移位)。

(4)運算規(guī)則第十七頁,共九十一頁,編輯于2023年,星期二183.3.2.定點數(shù)二位乘法每次用兩位乘數(shù)去乘被乘數(shù),乘法速度提高一倍Yi-1(高位)Yi(低位)部分積累加、移位00011011

1/4P1/4(P+X)1/4(P+2X)1/4(P+3X)(0)(1)(2)(3)

0

X

2X

3XX左移1位即得2X,如何實現(xiàn)+3X操作?

原碼兩位乘法為例

(1)算法分析(P48)第十八頁,共九十一頁,編輯于2023年,星期二19

1/4(P+3X)=

1/4(P-X+4X)=1/4(P-X)+X

設置欠帳觸發(fā)器C=0不欠帳1欠帳,下次補作+X操作(2)算法(P49表3.3)00000101001100101110111操作

Yi-1YiC1/4(P+X)0C1/4(P+X)0C1/4(P+2X)0C1/4P0C1/4(P+2X)

0C1/4(P-X)

1C1/4(P-X)

1C1/4P

1C第十九頁,共九十一頁,編輯于2023年,星期二20[-X]補=11.0110012X=01.001110

部分積

乘數(shù) 欠位C

00.0000001001110

+[-X]補

11.011001 11.011001 右移2位11.110110011001

1 +2X01.001110

01.000100

右移2位00.010001 000110 0+2X01.00111001.011111

右移2位000101111100010 乘積高位 乘積低位

X*Y=0.010111110001例3.35假定X=0.100111,Y=0.100111求XY=?

第二十頁,共九十一頁,編輯于2023年,星期二21注意:

若最后一次操作欠下+4X即C=1,則最后一次右移2位后,還需補充+X操作,+X后不再移位。乘數(shù)符號不參加運算,參加運算的操作數(shù)取絕對值,x|X|,2x2|X|,符號位單獨處理。第二十一頁,共九十一頁,編輯于2023年,星期二南華大學計算機學院223.3.3陣列乘法器

為了進一步提高乘法運算的速度,可采用高速乘法模塊組成的陣列乘法器,設有兩個帶符號的二進制數(shù)。例:m=n=4時,有:

x4x3x2x1*y4y3y2y1

----------------------------------------x4y1x3y1x2y1x1y1

x4y2x3y2x2y2x1y2

x4y3x3y3x2y3x1y3

x4y4x3y4x2y4x1y4

P8P7P6P5P4P3P2P1

其結構圖見P50圖3.7可同時得到各項部分積,并一次將其相加就得到乘積運算速度快。第二十二頁,共九十一頁,編輯于2023年,星期二23圖3.7陣列乘法器第二十三頁,共九十一頁,編輯于2023年,星期二243.4二進制除法運算

二進制除法可模仿十進制除法運算。 除法,理論上是乘法的逆運算,在算法上本質是一種試探法:它試探被除數(shù)是大于等于還是小于除數(shù),大于等于時商為1,小于時商為0。第二十四頁,共九十一頁,編輯于2023年,星期二25

筆算除法A=0.1001,B=0.1011,求商C,余數(shù)R.

0.1101

0.10110.10010R0=A -0.01011-2-1B 0.001110R1 -0.001011-2-2B 0.0000110R2

0.00001100R3 -0.00001011-2-4B 0.00000001R4第二十五頁,共九十一頁,編輯于2023年,星期二26筆算過程在計算機上的實現(xiàn),必須作些變動:比較除數(shù)與被除數(shù)過程,用減法實現(xiàn);除數(shù)乘以1/2與余數(shù)比較,等效于除數(shù)不動,而使余數(shù)左移一位;上商可以通過在商寄存器末位置1(商1)或置0(商0)來實現(xiàn)。上商同時使商寄存器與余數(shù)寄存器一起左移一位。(商寄存器初始存放被除數(shù)的低位數(shù)值部分)第二十六頁,共九十一頁,編輯于2023年,星期二273.4.1定點除法運算定點原碼一位除法有恢復余數(shù)法和加減交替法兩種方法,在計算機中常用的是加減交替法,因為它的操作步驟少,而且也不復雜。兩個原碼數(shù)相除,其商的符號為兩數(shù)符號的異或值,數(shù)值則為兩數(shù)絕對值相除后的結果。實現(xiàn)除法的關鍵:

比較余數(shù)、除數(shù)絕對值大小,以決定上商。第二十七頁,共九十一頁,編輯于2023年,星期二28運算規(guī)則:符號位單獨處理,C0=A0B0數(shù)值部分變成兩正數(shù)相除,即:|A|/|B|(|A|<|B|,防止商溢出)第1步除法通過R0-|B|(R0=|A|)實現(xiàn);其后每1步除法通過2Ri-|B|(i=1,2,…,n)實現(xiàn):若2Ri-|B|=Ri+10,即余數(shù)為正,則商上1;若2Ri-|B|=Ri+1<0,即余數(shù)為負,則商上0。第二十八頁,共九十一頁,編輯于2023年,星期二29

1.恢復余數(shù)法

不管被除數(shù)(或余數(shù))減除數(shù)是否夠減,都一律做減法。若余數(shù)為正或0,表示夠減,該位商上“1”,余數(shù)左移1位。若余數(shù)為負,表示不夠減,該位商上“0”,并要恢復原來的被除數(shù)(或余數(shù)),再將其左移1位。按上述規(guī)則實現(xiàn)的除法器,有什么問題?

相同位數(shù)的除法,對于不同的值,由于可能有恢復余數(shù)過程,運算步數(shù)不統(tǒng)一。控制器實現(xiàn)困難?。ɑ貞洠撼朔ㄟ\算器里的步數(shù)計數(shù)器)第二十九頁,共九十一頁,編輯于2023年,星期二30

設某步得到余數(shù)Ri≥0,得到下步除法的新余數(shù)Ri+1:

Ri+1=2Ri-|B|

若Ri是假余數(shù),即Ri<0,要得到下步除法的新余數(shù)Ri+1,要先恢復余數(shù),而后左移一位再減|B|才能得到新余數(shù)。即:

Ri+1=2(Ri+|B|)-|B|

將上式變換一下,得:

Ri+1=2Ri+|B|去掉恢復步!加減交替法第三十頁,共九十一頁,編輯于2023年,星期二31

若某步除法Ri<0,要得到下步除法的新余數(shù)Ri+1,不必恢復余數(shù),只要將Ri視為余數(shù),左移一位,再加上|B|就得到新余數(shù)Ri+1。即:本次余數(shù)為正,下步除法作減法;(夠減,商上1)本次余數(shù)為負,下步除法作加法。(不夠減,商上0)2.加減交替法第三十一頁,共九十一頁,編輯于2023年,星期二例3.36設被除數(shù)X=0.1011,除數(shù)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.00000111第三十二頁,共九十一頁,編輯于2023年,星期二

余數(shù)寄存器(A)中開始時存放被除數(shù)的絕對值,以后將存放各次余數(shù),取雙符號位。除數(shù)寄存器(B)存放除數(shù)的絕對值,取雙符號位。商寄存器(C)同來存放商及初始被除數(shù)低位數(shù)值(被除數(shù)位數(shù)可以是除數(shù)的兩倍),取單符號位。將被除數(shù)X視為初始余數(shù)R0,根據R0符號位正(絕對值),令商符為0,正式的商符以后再置入。第一步為-Y。商值則根據余數(shù)Ri的符號來決定,正則商上1,求下一位商的辦法是余數(shù)左移一位再減去除數(shù);當余數(shù)為負則商上0,求下一位商的辦法是余數(shù)左移一位再加上除數(shù)。左移位時末位補0。最后一步操作:如果要求得n位商(不含符號位),則需作n步“左移-加減”循環(huán);若第n步余數(shù)為負,則需增加一步恢復余數(shù),增加的這一步不移位。第三十三頁,共九十一頁,編輯于2023年,星期二343.4.2提高除法運算速度的方法舉例

1.跳0跳1除法

提高規(guī)格化小數(shù)絕對值相除速度的算法??筛鶕鄶?shù)前幾位代碼值再次求得幾位同為1或0的商。其規(guī)則是:(1)如果余數(shù)R≥0,且R的高K個數(shù)位均數(shù)0,則本次直接得商1,后跟K-1個0。R左移K位后,減去除數(shù)Y,得新余數(shù)。(2)如果余數(shù)R<0,且R的高K個數(shù)位均為1,則本次商為0,后跟K-1個1,R左移K位后,加上除數(shù)Y,得新余數(shù)。(3)不滿足(1)和(2)中條件時,按一位除法上商。第三十四頁,共九十一頁,編輯于2023年,星期二35例3.37

設X=0.1010000,Y=0.1100011,求X/Y。解:略

2.除法運算通過乘法操作來實現(xiàn) 在計算機運行時,執(zhí)行乘法指令的幾率比除法高。某些CPU中設置有專門的乘法器,一般沒有專用除法器,在這種情況下,利用乘法來完成除法運算可提高速度。第三十五頁,共九十一頁,編輯于2023年,星期二36設X為被除數(shù),Y為除數(shù),按下式完成X/Y。式中Fi(0≤i≤r)為迭代系數(shù),如果迭代幾次后,可以使分母Y×F0×F1×…×Fr→1,則分子即為商:

X·F0·F1…Fr

因此,問題是如何找到一組迭代系數(shù),使分母很快趨近于1。若X和Y為規(guī)格化正小數(shù)二進制代碼,可寫成: Y=1-δ(0<δ≤1/2)第三十六頁,共九十一頁,編輯于2023年,星期二37如果取F0=1+δ,則第一次迭代結果:

Y0=Y·F0=(1-δ)(1+δ)=1-δ2取F1=1+δ2,則第二次迭代結果:

Y1=Y0·F1=(1-δ2)(1+δ2)=1-δ4 …取Fi=1+δ2i,則第i+1次迭代結果:

Yi=Yi-1·Fi=(1-δ2i)(1+δ2i)=1-δ2i+1當i增加時,Y將很快趨近于1,其誤差為δ2i+1。實際上求得Fi的過程很簡單,即

Fi=1+δ2i=2-1+δ2i=2-(1-δ2i)=2-Yi-1 Fi就是(-Yi-1)的補碼(0≤i≤r)。第三十七頁,共九十一頁,編輯于2023年,星期二38例3.38

設X=0.1000,Y=0.1011則δ=1-Y=0.0101,F(xiàn)0=1+δ=1.0101

分子分母分別進行乘法運算。

F1=2-Y0=2-0.1110=1.0010

分母趨近于1所以 第三十八頁,共九十一頁,編輯于2023年,星期二393.5浮點數(shù)的運算方法

浮點數(shù)的表示形式(以2為底):

N=M·2E

其中,M為浮點數(shù)的尾數(shù),一般為絕對值小于1的規(guī)格化二進制小數(shù)用原碼或補碼形式表示;E為浮點數(shù)的階碼,一般是用移碼或補碼表示的整數(shù)。

第三十九頁,共九十一頁,編輯于2023年,星期二403.5.1浮點數(shù)的加減法運算 兩數(shù)首先均為規(guī)格化數(shù),在進行規(guī)格化浮點數(shù)的加減運算需經過五步完成:(1)對階操作:低階向高階補齊,使階碼相等;(2)尾數(shù)運算:階碼對齊后直接對尾數(shù)運算;(3)結果規(guī)格化:對運算結果進行規(guī)格化處理;

(使補碼尾數(shù)的最高位和尾數(shù)符號相反)(4)舍入操作:丟失位進行0舍1入或恒置1處理;(5)判斷溢出:判斷階碼是否溢出,下溢則將運算結果置0(機器零),上溢則溢出中斷。第四十頁,共九十一頁,編輯于2023年,星期二舉例說明如下:(1)對階運算(小階向大階對齊)尾數(shù)為原碼時,尾數(shù)右移,符號位不動,最高位補0尾數(shù)為補碼時,尾數(shù)右移,符號也移位,最高位補符號位例如:求 =?小階對大階舍掉的是如大階對小階則舍掉的是第四十一頁,共九十一頁,編輯于2023年,星期二(2)尾數(shù)的加減運算(3)規(guī)格化:原碼尾數(shù)值高位為1,補碼尾數(shù)值高位與符號相反(4)舍入操作:0舍1入或恒置1例1:求 =?0舍1入后為恒置1例2:求=?0舍1入后為恒置1(5)判斷結果的正確性(即結果的階碼是否溢出)第四十二頁,共九十一頁,編輯于2023年,星期二南華大學計算機學院43規(guī)格化浮點數(shù)加減運算流程。(P91)第四十三頁,共九十一頁,編輯于2023年,星期二44例3.39兩浮點數(shù)相加,求X+Y。

已知:X=2010·0.11011011,y=2100·(-0.10101100)計算過程:解:X和Y在機器中的浮點補碼表示形式為(雙符號位):階符階碼數(shù)符尾數(shù)

X:000100011011011

Y:001001101010100(1)對階操作

階差ΔE=[Ex]補+[-EY]補=00010+11100=11110

X階碼小,Mx右移2位,保留階碼E=00100。

[Mx]補=000011011011下劃線上的數(shù)是右移出去而保留的附加位。(2)尾數(shù)相加

[Mx]補+[MY]補=000011011011+1101010100=111000101011。(3)規(guī)格化操作

左規(guī),移1位,結果:110001010110;階碼-1,E=00011。

第四十四頁,共九十一頁,編輯于2023年,星期二45(4)舍入附加位最高位為1,在所得結果的最低位+1。得新結果:[M]補=1100010110,

M:-0.11101010。(5)判溢出階碼符號位為00,故不溢出。最終結果為:

X+Y=2011·(-0.11101010)第四十五頁,共九十一頁,編輯于2023年,星期二

浮點數(shù)的乘除:階碼為兩數(shù)階碼之和、差,其尾數(shù)應為兩數(shù)的尾數(shù)之積、商。

結果的處理:結果必須進行規(guī)格化、舍入和判溢出等操作。

3.5.2浮點數(shù)的乘除法運算第四十六頁,共九十一頁,編輯于2023年,星期二1.浮點數(shù)的階碼運算

階碼運算:+1,-1,兩階碼求和以及兩階碼求差四種。

移碼的運算規(guī)則:

移碼的定義為:[X]移=2n+X -2n≤X<2n

[X]移+[Y]移=2n+X+2n+Y=2n+(2n+(X+Y)) =2n+[X+Y]移

結果的最高位多加了個1,要得到移碼形式的結果,需對結果的符號取反。第四十七頁,共九十一頁,編輯于2023年,星期二

根據補碼定義:[Y]補=2n+1+Ymod2n+1因此求階碼和(移碼表示)可用如下方式完成: [X]移+[Y]補=2n+X+2n+1+Y=2n+1+(2n+(X+Y)) =[X+Y]移

mod2n+1

同理有[X]移+[-Y]補=[X-Y]移。 執(zhí)行移碼加或減時,取加數(shù)或減數(shù)符號位的反碼(補碼)進行運算。即被加(減)數(shù)為移碼,加(減)數(shù)為補碼。直接用移碼實現(xiàn)求階碼之和第四十八頁,共九十一頁,編輯于2023年,星期二

使用雙符號位的階碼相加減,并規(guī)定移碼(被加數(shù)或被減數(shù))的第二個符號位,即最高符號位恒用0參加加減運算。

當結果的最高符號位為0時,表明沒有溢出。低位符號位為1,表明結果為正;為0時,表明結果為負。

溢出條件是結果的最高符號位為1。

溢出時,當?shù)臀环栁粸?時結果上溢,為1時結果下溢。判定溢出的方法第四十九頁,共九十一頁,編輯于2023年,星期二例:階碼用4位表示,其范圍為-8到+7。(1)當X=+011,Y=+110時,則有 [X]移=01011,[Y]補=00110,[-Y]補=11010階碼加[X+Y]移=[X]移+[Y]補=01011+00110=10001,結果上溢階碼減[X-Y]移=[X]移+[-Y]補=01011+11010=00101,結果正確,為-3(2)當X=-011,Y=-110時,則有 [X]移=00101,[Y]補=11010,[-Y]補=00110階碼加[X+Y]移=[X]移+[Y]補=00101+11010=11111,結果下溢階碼減[X-Y]移=[X]移+[-Y]補=00101+00110=01011,結果正確,為+3第五十頁,共九十一頁,編輯于2023年,星期二2.浮點數(shù)的舍入處理

計算機中,浮點數(shù)的尾數(shù)有確定的位數(shù),若浮點數(shù)的運算結果超過給定的位數(shù),要進行去除多余位數(shù)的處理。處理的原則是使本次處理所造成的誤差以及按此原則產生的累計誤差都比較小。①無條件地丟掉正常尾數(shù)最低位之后的全部數(shù)值。這種辦法被稱為截斷處理,其好處是處理簡單,缺點是影響結果的精度。②保留右移中移出的若干高位的值,然后再按某種規(guī)則用這些位上的值修正尾數(shù)。這種處理方法被稱為舍入處理。第五十一頁,共九十一頁,編輯于2023年,星期二舍入方法:只要尾數(shù)最低位為1,或移出去的幾位中有1,就把尾數(shù)的最低位置1,否則仍保持原有的0值?;蛘卟捎酶啽愕姆椒?,即最低位恒置1的方法。

0舍1入法(相當于十進制中的四舍五入法),即當丟失的最高位的值為1時,把這個1加到最低數(shù)值位上進行修正,否則舍去丟失的各位的值,其缺點是要多進行一次加法運算。第五十二頁,共九十一頁,編輯于2023年,星期二例3.40設有5位數(shù)(其中有一附加位),用原碼或補碼表示,舍入后保留4位結果。(0舍1入法)設:[X]原=0.11011舍入后[X]原=0.1110 [X]原=0.11100舍入后[X]原=0.1110 [X]補=1.00101舍入后[X]補=1.0011 [X]補=1.00100舍入后[X]補=1.0010舍入后產生了誤差,但誤差值小于末位的權值。第五十三頁,共九十一頁,編輯于2023年,星期二3.浮點乘法運算步驟

舉例說明浮點乘法的運算步驟:例3.41階碼4位(移碼),尾數(shù)8位(補碼,含1符號位),階碼以2為底。運算結果仍取8位尾數(shù)。設:X=2-5·0.1110011,Y=23·(-0.1110010)

運算過程中階碼取雙符號位。(1)求乘積的階碼。乘積的階碼為兩數(shù)階碼之和。[EX+EY]移=[EX]移+[EY]補=00011+00011=00110(2)尾數(shù)相乘。用定點數(shù)相乘的辦法,[X·Y]補=1.0011001

1001010(尾數(shù)部分)高位部分低位部分第五十四頁,共九十一頁,編輯于2023年,星期二(3)規(guī)格化處理。本例尾數(shù)已規(guī)格化,不需要再處理。如未規(guī)格化,需左規(guī)。(4)舍入。尾數(shù)(乘積)低位部分的最高為1,需要舍入,在乘積高位部分的最低位加1,因此

[X·Y]補=1.0011010(尾數(shù)部分)(5)判溢出。階碼未溢出,故結果為正確。 X·Y=2-2·(-0.1100110)

在求乘積的階碼(即兩階碼相加)時,有可能產生上溢或下溢的情況;在進行規(guī)格化處理時,有可能產生下溢。第五十五頁,共九十一頁,編輯于2023年,星期二4.浮點數(shù)乘法運算(階碼的底為8或16)

N=8E·M或N=16E·M

階碼E和尾數(shù)M還都是用二進制表示的,其運算規(guī)則與階碼以2為底基本相同,但關于對階和規(guī)格化操作有新的相應規(guī)定。當階碼以8為底時,只要尾數(shù)滿足1/8≤M<1或

-1≤M<-1/8就是規(guī)格化數(shù)。執(zhí)行對階和規(guī)格化操作時,每當階碼的值增或減1,尾數(shù)要相應右移或左移三位。當階碼以16為底時,只要尾數(shù)滿足1/16≤M<1或

-1≤M<-1/16就是規(guī)格化數(shù)。執(zhí)行對階和規(guī)格化操作時,階碼的值增或減1,尾數(shù)必須移四位。第五十六頁,共九十一頁,編輯于2023年,星期二5.浮點數(shù)除法運算步驟(1)求商的階碼 尾數(shù)調整:保證MX<MY

階碼相加減(2)尾數(shù)相除(3)規(guī)格化(4)舍入(5)判溢出第五十七頁,共九十一頁,編輯于2023年,星期二583.6運算部件

1.定點運算部件

定點運算部件由算術邏輯運算部件ALU、若干個寄存器、移位電路、計數(shù)器、門電路等組成。

ALU部件主要完成加減法算術運算及邏輯運算。第五十八頁,共九十一頁,編輯于2023年,星期二59第五十九頁,共九十一頁,編輯于2023年,星期二602.浮點運算部件

通常由階碼運算部件和尾數(shù)運算部件組成,其各自的結構與定點運算部件相似。但階碼部分僅執(zhí)行加減法運算。其尾數(shù)部分則執(zhí)行加減乘除運算,左規(guī)時有時需要左移多位。為加速移位過程,有的機器設置了可移動多位的電路。第六十頁,共九十一頁,編輯于2023年,星期二3.7數(shù)據校驗碼

計算機系統(tǒng)中的數(shù)據,在讀寫、存取和傳送的過程中可能產生錯誤。為減少和避免這類錯誤,一方面是精心設計各種電路,提高計算機硬件的可靠性;另一方面是在數(shù)據編碼上找出路,即采用某種編碼法,通過少量的附加電路,使之能發(fā)現(xiàn)某些錯誤,甚至能確定出錯位置,進而實現(xiàn)自動改錯的能力。

數(shù)據校驗碼:是一種常用的帶有發(fā)現(xiàn)某些錯誤或自動改錯能力的數(shù)據編碼方法。(查錯與糾錯)

實現(xiàn)原理:是加進一些冗余碼,使合法數(shù)據編碼出錯變成非法數(shù)據來發(fā)現(xiàn)或改正數(shù)據。常用的數(shù)據校驗碼:奇偶校驗碼、海明校驗碼和循環(huán)冗余校驗碼。第六十一頁,共九十一頁,編輯于2023年,星期二

采用冗余校驗方法:即在基本的有效數(shù)據外,再擴充部分位,增加部分(冗余部分)被稱為校驗位。將校驗位與數(shù)據位一起按某種規(guī)則編碼,寫入存儲器或向外發(fā)送。當從存儲器讀出或接收到外部傳入的代碼時,再按相應的規(guī)則進行判讀。若不符合約定的規(guī)則,則表示出現(xiàn)錯誤。根據錯誤的特征進行修正恢復。第六十二頁,共九十一頁,編輯于2023年,星期二幾個名詞概念碼字:由若干代碼組成的一個字。如8421碼中0110(6),0111(7)距離:兩個碼字之間不同的代碼個數(shù)。8421碼中,最小的距離為1,如0000和0001、0010和0011等;最大距離為4,如0111和1000。碼距(最小碼距):一種碼制中任意兩個碼字間的最小

距離。(合法碼到合法碼變動的最小位數(shù))

8421碼的碼距為1。碼距為1,即不能查錯也不能糾錯。碼距越大,查錯、糾錯能力越強。第六十三頁,共九十一頁,編輯于2023年,星期二碼距與檢糾錯的關系①為了檢測e個誤碼,要求最小碼距d0應滿足: d0≥e+1②為了糾正t個誤碼,要求最小碼d0距應滿足: d0≥2t+1③為了糾正t個誤碼,同時能檢測e個誤碼(e>t),要求最小碼距d0應滿足: d0≥e+t+16/7/202364第六十四頁,共九十一頁,編輯于2023年,星期二3.7.1奇偶校驗碼

奇偶校驗碼是計算機中廣泛采用的檢查傳輸數(shù)據準確性的方法。奇偶校驗的原理是: 在每組數(shù)據信息上附加一個校驗位,使碼距由1增加到2(合法碼到合法碼變動的最小位數(shù)為2)。若編碼中有奇數(shù)個二進制位出錯了,這個碼將變成非法編碼。如果采用奇校驗,則這組數(shù)據加上校驗碼位后數(shù)據中‘1’的個數(shù)應為奇數(shù)個。奇校驗位形成公式:

C=X0⊕X1⊕…⊕Xn-1

如果采用偶校驗,則這組數(shù)據加上校驗碼位后數(shù)據中‘1’的個數(shù)應為偶數(shù)個。偶校驗位形成公式:

C=X0⊕X1⊕…⊕Xn-1第六十五頁,共九十一頁,編輯于2023年,星期二

下面給出對幾個字節(jié)值的奇偶校驗的編碼結果:

數(shù)據奇校驗的編碼偶校碼的編碼00000000l00000000000000000010l0l000010l0100l01010l0001ll1lll0011l111110l111l1l

其中,最高一位為校驗位,其余低八位為數(shù)據位。從中可以看到,校驗位的值取O還是1,是由數(shù)據位中1的個數(shù)決定的。第六十六頁,共九十一頁,編輯于2023年,星期二缺點:這種方案只能發(fā)現(xiàn)一位錯或奇數(shù)個位錯,但不能確定是哪一位錯,也不能發(fā)現(xiàn)偶數(shù)個位錯。優(yōu)點:該方案還是有很好的實用價值。偶校驗位形成第六十七頁,共九十一頁,編輯于2023年,星期二奇偶校驗的特點:1、奇偶校驗碼使數(shù)據的碼距為2,因而可檢出數(shù)據傳送過程中奇數(shù)個數(shù)位出錯的情況(一位變動會使校驗位改變,d0≥e+1=2);2、實際中兩位同時出錯的概率極低,奇偶校驗法簡便可靠易行,但它只能發(fā)現(xiàn)錯誤,卻不知錯在何處,因而不能自動糾正。3、奇偶校驗碼是一種開銷最小,能發(fā)現(xiàn)數(shù)據代碼中一位出錯情況的編碼。 常用于存儲器讀寫檢查,或ASCII字符傳送過程中的檢查。第六十八頁,共九十一頁,編輯于2023年,星期二3.7.2海明校驗碼

海明校驗碼是RichardHamming于1950年提出的,目前仍廣泛使用的一種編碼方法。1、原理(1)特點:能檢測出兩位同時出錯、亦能檢測出一位出錯并能自動糾錯。(碼距d0≥e+t+1=2+1+1=4)(2)實現(xiàn)原理:在k個數(shù)據位之外加上r個校驗位,從而形成一個k+r位的新碼字,當某一位出錯后,就會引起相關的幾個(d0

個)校驗位的值發(fā)生變化,從而達到檢錯、糾錯的目的。第六十九頁,共九十一頁,編輯于2023年,星期二

能檢測與自動糾正一位錯,并發(fā)現(xiàn)兩位錯,校驗位r與數(shù)據位k應滿足下述關系: 2r-1≥k+r(一位出錯并糾錯且發(fā)現(xiàn)兩位錯

d0≥e+t+1=2+1+1=4)

數(shù)據位k與校驗位r的對應關系:

第七十頁,共九十一頁,編輯于2023年,星期二2、編碼規(guī)則

若海明碼的最高位號為m,最低位號為1,即:HmHm-1…H2H1,則此海明碼的編碼規(guī)律是:(1)校驗位與數(shù)據位之和為m,每個校驗位Pi(Parity,奇偶校驗位)在海明碼中被分在位號2i-1的位置,其余各位為數(shù)據位,并按從低向高逐位依次排列的關系分配各數(shù)據位。(2)海明碼的每一位碼Hi(包括數(shù)據位和校驗位本身)由多個校驗位校驗,其關系是被校驗的每一位位號要等于校驗它的各校驗位的位號之和。這樣安排的目的,是希望校驗的結果能正確反映出出錯位的位號。第七十一頁,共九十一頁,編輯于2023年,星期二例討論一個字節(jié)的海明碼(1)K=8,按表3.5得出r=5

故海明碼的總位數(shù)為13,可表示:

H13H12H11...H3H2H1P5只能放在H13一位上,它已經是海明碼的最高位了,其他4位滿足Pi的位號等于2i-1的關系。其余為數(shù)據位Di,則有如下排列關系:位號13121110987654321信息P5D8D7D6D5P4D4D3D2P3D1P2P1第七十二頁,共九十一頁,編輯于2023年,星期二

每一位號等于校驗它的各校驗位的位號之和第七十三頁,共九十一頁,編輯于2023年,星期二(2)計算各個校驗位的值D1(H3)D2(H5)D3(H6)D4(H7)D5(H9)D6(H10)D7(H11)D8(H12)P1(H1)P2(H2)P3(H4)P4(H8)P5(H13)√√√√√√√√√√√√√√√√√√P1=D1⊕D2⊕D4⊕D5⊕D7P2=D1⊕D3⊕D4⊕D6⊕D7

P3=D2⊕D3⊕D4⊕D8P4=D5⊕D6⊕D7⊕D8P5=D1⊕D2⊕D3⊕D4⊕D5⊕D6⊕D7⊕D8⊕P4⊕P3⊕P2⊕P1在這種安排中,每一位數(shù)據位,都至少地出現(xiàn)在3個Pi值的形成關系中。當任一位數(shù)據碼發(fā)生變化時,必將引起3個或4個Pi值跟著變化,該海明碼的碼距為4。校驗位的編碼規(guī)則(偶校驗)第七十四頁,共九十一頁,編輯于2023年,星期二S1=P1⊕D1⊕D2⊕D4⊕D5⊕D7

S2=P2⊕D1⊕D3⊕D4⊕D6⊕D7

S3=P3⊕D2⊕D3⊕D4⊕D8

S4=P4⊕D5⊕D6⊕D7⊕D8

S5=P5⊕P4⊕P3⊕P2⊕P1⊕D1⊕D2⊕D3⊕D4⊕D5⊕D6⊕D7⊕D8

(3)譯碼規(guī)則(接受端)--偶校驗

則校驗得到的結果值S5~S1能反映13位海明碼的出錯情況。任何偶數(shù)個數(shù)出錯,S5一定為0,因此可區(qū)分兩位出錯或一位出錯。Si=Pi⊕形成Pi的編碼規(guī)則第七十五頁,共九十一頁,編輯于2023年,星期二用海明位號改寫S4~S1:S1=H1⊕H3⊕H5⊕H7⊕H9⊕H11

S2=H2⊕H3⊕H6⊕H7⊕H10⊕H11

S3=H4⊕H5⊕H6⊕H7⊕H12S4=H8⊕H9⊕H10⊕H11⊕H12假設:H12(D8)出錯、S4S3S2S1=1100H11(D7)出錯、S4S3S2S1=1011H10(D6)出錯、S4S3S2S1=1010H9(D5)出錯、S4S3S2S1=1001H7(D4)出錯、S4S3S2S1=0111H6(D3)出錯、S4S3S2S1=0110H5(D2)出錯、S4S3S2S1=0101H3(D1)出錯、S4S3S2S1=0011結論:當某個數(shù)據位出錯時、S4S3S2S1的值等于該出錯位數(shù)據在海明碼中的位號。問題:1.當某個校驗位出錯時、S4S3S2S1的值等于什么?

2n位號

2.S5與S4S3S2S1的各種組合分別反映了海明碼的什么狀態(tài)?S5為0有偶數(shù)個錯(S4S3S2S1=0無錯;不為0有兩位錯)第七十六頁,共九十一頁,編輯于2023年,星期二3、海明碼校驗邏輯電路第七十七頁,共九十一頁,編輯于2023年,星期二第七十八頁,共九十一頁,編輯于2023年,星期二例1:請計算8位二進制信息10011010的海明碼字是多少?解:1)計算r=?2)計算P1~P5=?r=5D1(H3)0D2(H5)1D3(H6)0D4(H7)1D5(H9)1D6(H10)0D7(H11)0D8(H12)1P1(H1)P2(H2)P3(H4)P4(H8)P5(H13)

溫馨提示

  • 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

提交評論