版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
計算機組成原理朱華貴2015年9月21日計算機組成原理第4章數(shù)值的機器運算朱華貴2015年9月21日計算機組成原理運算器是計算機進行算術(shù)運算和邏輯運算的主要部件,運算器的邏輯結(jié)構(gòu)取決于機器的指令系統(tǒng)、數(shù)據(jù)表示方法和運算方法等。本章主要討論數(shù)值數(shù)據(jù)在計算機中實現(xiàn)算術(shù)運算和邏輯運算的方法,以及運算部件的基本結(jié)構(gòu)和工作原理。
第4章數(shù)值的機器運算本章學(xué)習(xí)內(nèi)容4.1基本算術(shù)運算的實現(xiàn)4.2定點加減運算4.3帶符號數(shù)的移位和舍入操作4.4定點乘法運算4.5定點除法運算4.6規(guī)格化浮點運算4.7十進制整數(shù)的加法運算4.8邏輯運算與實現(xiàn)4.9運算器的基本組成與實例本章學(xué)習(xí)要求掌握:定點補碼加法和減法運算方法理解:3種溢出檢測方法理解:補碼移位運算和常見的舍入操作方法了解:串行加法器與并行加法器理解:進位產(chǎn)生和進位傳遞掌握:定點原碼、補碼乘法運算方法掌握:定點原碼、補碼加減交替除法運算方法理解:浮點加減乘除運算理解:邏輯運算了解:運算器的基本結(jié)構(gòu)及浮點協(xié)處理器4.1基本算術(shù)運算的實現(xiàn)
計算機中最基本的算術(shù)運算是加法運算,不論加、減、乘、除運算最終都可以歸結(jié)為加法運算。所以在此討論最基本的運算部件——加法器,以及并行加法器的進位問題。4.1.1加法器1.全加器全加器(FA)是最基本的加法單元,它有三個輸入量:操作數(shù)Ai和Bi、低位傳來的進位Ci-1;兩個輸出量:本位和Si、向高位的進位Ci。
圖4-1全加器的邏輯框圖
全加器真值表AiBiCi-1SiCi0000111100110011010101010110100100010111根據(jù)真值表,可得到全加器的邏輯表達式為:
Si=Ai⊕Bi⊕Ci-1Ci=AiBi+(Ai⊕Bi)Ci-1全加器的邏輯表達式2.串行加法器與并行加法器加法器有串行和并行之分。在串行加法器中,只有一個全加器,數(shù)據(jù)逐位串行送入加法器進行運算;并行加法器則由多個全加器組成,其位數(shù)的多少取決于機器的字長,數(shù)據(jù)的各位同時運算。
串行加法器具有器件少、成本低的優(yōu)點,但運算速度太慢,所以除去某些低速的專用運算器外很少采用。
并行加法器可同時對數(shù)據(jù)的各位相加,但存在著一個加法的最長運算時間問題。這是因為雖然操作數(shù)的各位是同時提供的,但低位運算所產(chǎn)生的進位會影響高位的運算結(jié)果。例如:11…11和00…01相加,最低位產(chǎn)生的進位將逐位影響至最高位,因此,并行加法器的最長運算時間主要是由進位信號的傳遞時間決定的,而每個全加器本身的求和延遲只是次要因素。很明顯,提高并行加法器速度的關(guān)鍵是盡量加快進位產(chǎn)生和傳遞的速度。
并行加法器中的每一個全加器都有一個從低位送來的進位輸入和一個傳送給高位的進位輸出。將傳遞進位信號的邏輯線路連接起來構(gòu)成的進位網(wǎng)絡(luò)稱為進位鏈。每一位的進位表達式為:
Ci=AiBi+(Ai⊕Bi)Ci-1其中:Gi=AiBi為進位產(chǎn)生函數(shù)
Pi=Ai⊕Bi為進位傳遞函數(shù)
∴進位表達式Ci=Gi+PiCi-14.1.2進位的產(chǎn)生和傳遞圖4-3串行進位的并行加法器其中:C1=G1+P1C0C2=G2+P2C1
┇
Cn=Gn+PnCn-1
串行進位的并行加法器
4.1.2進位的產(chǎn)生和傳遞(續(xù))
串行進位的并行加法器的總延遲時間與字長成正比,字長越長,總延遲時間就越長。假定,將一級“與門”、“或門”的延遲時間定為ty,從上述公式中可看出,每一級全加器的進位延遲時間為2ty。在字長為n位的情況下,若不考慮Gi、Pi的形成時間,從C0→Cn的最長延遲時間為2nty(設(shè)C0為加法器最低位的進位輸入,Cn為加法器最高位的進位輸出)。1.并行進位方式
并行進位又叫先行進位、同時進位,其特點是各級進位信號同時形成。
C1=G1+PC0C2=G2+P2C1=G2+P2G1+P2P1C0C3=G3+P3C2=G3+P3G2+P3P2G1+P3P2P1C0
C4=G4+P4C3=G4+P4G3+P4P3G2+P4P3P2G1
+P4P3P2P1C0
┇4.1.3并行加法器的快速進位這種進位方式是快速的,若不考慮Gi、Pi的形成時間,從C0→Cn的最長延遲時間僅為2ty,而與字長無關(guān)。但是隨著加法器位數(shù)的增加,Ci的邏輯表達式會變得越來越長,輸入變量會越來越多,這會使電路結(jié)構(gòu)變得很復(fù)雜,所以完全采用并行進位是不現(xiàn)實的。⑴單級先行進位方式(組內(nèi)并行、組間串行)以16位加法器為例,可分為4組,每組4位。第一小組組內(nèi)的進位邏輯函數(shù)C1、C2、C3、C4的表達式與前述相同,它們是同時產(chǎn)生的,實現(xiàn)上述進位邏輯函數(shù)的電路稱之為4位先行進位電路CLA,其延遲時間是2ty。利用這種4位的CLA電路以及進位產(chǎn)生/傳遞電路和求和電路可以構(gòu)成4位的CLA加法器。用4個這樣的CLA加法器,很容易構(gòu)成16位的單級先行進位加法器。
2.分組并行進位方式16位單級先行進位加法器圖4-416位單級先行進位加法器16位單級先行進位時間圖圖4-516位單級先行進位時間圖
⑵多級先行進位方式(組內(nèi)并行、組間并行)仍以字長為16位的加法器作為例子,分析兩級先行進位加法器的設(shè)計方法。第一小組的進位輸出C4可以變成兩個與項相或:C4=G4+P4G3+P4P3G2+P4P3P2G1+P4P3P2P1C0=G1*+P1*C0其中:G1*=G4+P4G3+P4P3G2+P4P3P2G1P1*=P4P3P2P1
Gi*稱為組進位產(chǎn)生函數(shù)Pi*稱為組進位傳遞函數(shù)2.分組并行進位方式(續(xù))依次類推,可以得到:
C8=G2*+P2*C4=G2*+P2*G1*+P2*P1*C0C12=G3*+P3*G2+P3*P2*G1*+P3*P2*P1*C0C16=G4*+P4*G3*+P4*P3*G2*+P4*P3*P2*G1*+P4*P3*P2*P1*C0成組先行進位電路BCLA,其延遲時間是2ty。利用這種4位的BCLA電路以及進位產(chǎn)生/傳遞電路和求和電路可以構(gòu)成4位的BCLA加法器。16位的兩級先行進位加法器可由4個BCLA加法器和1個CLA電路組成。2.分組并行進位方式(續(xù))圖4-616位兩級先行進位加法器若不考慮Gi、Pi的形成時間,C0經(jīng)過2ty產(chǎn)生第一小組的C1、C2、C3及所有組進位產(chǎn)生函數(shù)Gi*和組進位傳遞函數(shù)Pi*;再經(jīng)過2ty,由CLA電路產(chǎn)生C4、C8、C12、C16;再經(jīng)過2ty后,才能產(chǎn)生第二、三、四小組內(nèi)的C5~C7、C9~C11、C13~C15。此時加法器的最長進位延遲時間是6ty。2.分組并行進位方式(續(xù))圖4-716位兩級先行進位時間圖
定點數(shù)的加減運算包括原碼、補碼和反碼3種帶符號數(shù)的加減運算,其中補碼加減運算實現(xiàn)起來最方便。4.2定點加減運算原碼加減運算規(guī)則:⑴參加運算的操作數(shù)取其絕對值;⑵若做加法,則兩數(shù)直接相加,若做減法,則將減數(shù)先變一次補,再進行加法運算;⑶運算之后,可能有兩種情況:
①有進位,結(jié)果為正,即得到正確的結(jié)果。
②無進位,結(jié)果為負,則應(yīng)再變一次補,才能得到正確的結(jié)果。⑷結(jié)果加上符號位。
通常,把運算之前的變補稱為前變補,運算之后的變補稱為后變補。
4.2.1原碼加減運算4.2.2補碼加減運算1.補碼加法
兩個補碼表示的數(shù)相加,符號位參加運算,且兩數(shù)和的補碼等于兩數(shù)補碼之和,即:
[X+Y]補=[X]補+[Y]補根據(jù)補碼加法公式可推出:
[X-Y]補=[X+(-Y)]補=[X]補+[-Y]補從補碼減法公式可以看出,只要求得[-Y]補,就可以變減法為加法。不管Y的真值為正或為負,已知[Y]補求[-Y]補的方法是:將[Y]補連同符號位一起求反,末尾加“1”
。[-Y]補被稱為[Y]補的機器負數(shù),由[Y]補求[-Y]補的過程稱為對[Y]補變補(求補),表示為
[-Y]補=[[Y]補]變補2.補碼減法2.補碼減法(續(xù))
“某數(shù)的補碼表示”與“變補”是兩個不同的概念。一個負數(shù)由原碼轉(zhuǎn)換成補碼時,符號位是不變的,僅對數(shù)值位各位變反,末位加“1”。而變補則不論這個數(shù)的真值是正是負,一律連同符號位一起變反,末位加“1”。[Y]補表示的真值如果是正數(shù),則變補后[-Y]補所表示的真值變?yōu)樨摂?shù),反之亦然。例1:Y=-0.0110,[Y]原=1.0110,
[Y]補=1.1010,[-Y]補=0.0110
例2:Y=0.0110,[Y]原=0.0110,
[Y]補=0.0110,[-Y]補=1.1010
⑴參加運算的兩個操作數(shù)均用補碼表示;⑵符號位作為數(shù)的一部分參加運算;⑶若做加法,則兩數(shù)直接相加;若做減法,則將被減數(shù)與減數(shù)的機器負數(shù)相加;⑷運算結(jié)果仍用補碼表示。3.補碼加減運算規(guī)則例3:A=0.1011,B=-0.1110,求A+B
∵[A]補=0.1011[B]補=1.00100.1011[A]補+1.0010[B]補1.1101[A+B]補
∴[A+B]補=1.1101
A+B=-0.0011例4:A=0.1011,B=-0.0010,求A-B
∵[A]補=0.1011[B]補=1.1110[-B]補=0.00100.1011[A]補+0.0010[-B]補0.1101[A-B]補
∴[A-B]補=0.1101
A-B=0.1101補碼減法示例
在計算機算術(shù)運算中,有時必須將采用給定位數(shù)表示的數(shù)轉(zhuǎn)換成具有更多位數(shù)的某種表示形式,這被稱為“符號擴展”。
實際上補碼的符號擴展非常簡單,所有附加位均用符號位填充,即正數(shù)用0進行填充,負數(shù)用1填充。4.符號擴展4.2.3補碼的溢出判斷與檢測方法1.溢出的產(chǎn)生
在補碼運算中,若兩個正數(shù)相加,而結(jié)果為負;兩個負數(shù)相加,而結(jié)果為正,則結(jié)果出錯。例5:設(shè):X=1011B=11D,Y=111B=7D則[X]補=0,1011,[Y]補=0,01110,1011 [X]補+0,0111 [Y]補1,0010 [X+Y]補∴[X+Y]補=1,0010
X+Y=-1110B=-14D
兩正數(shù)相加結(jié)果為-14D,顯然是錯誤的。1.溢出的產(chǎn)生(續(xù))例6:設(shè):X=-1011B=-11D,Y=-111B=-7D則[X]補=1,0101[Y]補=1,10011,0101 [X]補+1,1001 [Y]補0,1110 [X+Y]補∴[X+Y]補=0,1110
X+Y=1110B=14D
兩負數(shù)相加結(jié)果為14D,顯然也是錯誤的。1.溢出的產(chǎn)生(續(xù))字長為n+1位的定點整數(shù)(其中一位為符號位),采用補碼表示,當運算結(jié)果大于2n-1或小于-2n時,就產(chǎn)生溢出。設(shè)參加運算的兩數(shù)為X、Y,做加法運算。若X、Y異號,實際上是做兩數(shù)相減,所以不會溢出。若X、Y同號,運算結(jié)果為正且大于所能表示的最大正數(shù)或運算結(jié)果為負且小于所能表示的最小負數(shù)(絕對值最大的負數(shù))時,產(chǎn)生溢出。將兩正數(shù)相加產(chǎn)生的溢出稱為正溢;反之,兩負數(shù)相加產(chǎn)生的溢出稱為負溢。
2.溢出檢測方法設(shè):被操作數(shù)為:[X]補=Xs,X1X2…Xn
操作數(shù)為:[Y]補=Ys,Y1Y2…Yn
其和(差)為:[S]補=Ss,S1S2…Sn
⑴采用一個符號位采用一個符號位檢測溢出時,當Xs=Ys=0,Ss=1時,產(chǎn)生正溢;當Xs=Ys=1,Ss=0時,產(chǎn)生負溢。
溢出判斷條件為
溢出=Ss+XsYs2.溢出檢測方法(續(xù))⑵采用進位位判斷兩數(shù)運算時,產(chǎn)生的進位為Cs,C1C2…Cn,其中:Cs為符號位產(chǎn)生的進位,C1為最高數(shù)值位產(chǎn)生的進位。
兩正數(shù)相加,當最高有效位產(chǎn)生進位(C1=1)而符號位不產(chǎn)生進位(Cs=0)時,發(fā)生正溢;兩負數(shù)相加,當最高有效位不產(chǎn)生進位(C1=0)而符號位產(chǎn)生進位(Cs=1)時,發(fā)生負溢。故溢出條件為
溢出=C1+Cs=Cs⊕C1
2.溢出檢測方法(續(xù))⑶采用變形補碼(雙符號位補碼)在雙符號位的情況下,把左邊的符號位Ss1叫做真符,兩個符號位都作為數(shù)的一部分參加運算。這種編碼又稱為變形補碼。
雙符號位的含義如下:
Ss1Ss2=00結(jié)果為正數(shù),無溢出
Ss1Ss2=01結(jié)果正溢
Ss1Ss2=10結(jié)果負溢
Ss1Ss2=11結(jié)果為負數(shù),無溢出
當兩位符號位的值不一致時,表明產(chǎn)生溢出,溢出條件為:
溢出=Ss1⊕Ss24.2.4補碼定點加減運算的實現(xiàn)要實現(xiàn)補碼加法,則需給出X→F、Y→F和F→X三個控制信號,同時打開門A、門B和門C,把寄存器X和寄存器Y的內(nèi)容送入加法器的兩個輸入端進行加法運算,并把結(jié)果送回,最后由打入脈沖CPX打入寄存器X。
減法與加法的不同之處在于,加法使用Y→F控制信號,減法使用→F和1→F控制信號,其余控制信號相同。
補碼加減運算的邏輯電路圖4-8補碼加減運算器框圖≥1
在計算機中,實現(xiàn)乘除運算的方案通常有3種:
⑴
軟件實現(xiàn)。在低檔微機中無乘除運算指令,只能用乘法和除法子程序來實現(xiàn)乘除運算。
⑵
在原有實現(xiàn)加減運算的運算器基礎(chǔ)上增加一些邏輯線路,使乘除運算變換成加減和移位操作。在機器中設(shè)有乘除指令。
⑶
設(shè)置專用的乘、除法器,機器中設(shè)有相應(yīng)的乘除指令。
不管采用什么方案實現(xiàn)乘除法,基本原理是相同的。如果采用第⑵種方案,則必然會涉及到移位操作。4.3帶符號數(shù)的移位和舍入操作1.原碼的移位規(guī)則
不論正數(shù)還是負數(shù),在左移或右移時,符號位均不變,空出位一律以“0”補入。負數(shù)的原碼移位前后結(jié)果為:左移:移位前有:1X1X2
…Xn-1Xn
移位后有:1X2X3
…Xn
0右移:移位前有:1X1X2
…Xn-1Xn
移位后有:10
X1
…Xn-2Xn-1
4.3.1帶符號數(shù)的移位操作2.補碼的移位規(guī)則
⑴正數(shù)
符號位不變,不論左移或右移,空出位一律以“0”補入。⑵負數(shù)
符號位不變,左移后的空出位補“0”,右移后的空出位補“1”。左移:移位前有:1X1X2
…Xn-1Xn
移位后有:1X2X3
…Xn
0右移:移位前有:1X1X2
…Xn-1Xn
移位后有:11
X1
…Xn-2Xn-1
3.移位功能的實現(xiàn)在計算機中,通常移位操作由移位寄存器來實現(xiàn),但也有一些計算機不設(shè)置專門的移位寄存器,而在加法器的輸出端加一個移位器。移位器是由與門和或門組成的邏輯電路(實際是一個多路選擇器),可以實現(xiàn)直傳(不移位)、左斜一位送(左移一位)和右斜一位送(右移一位)的功能。移位器邏輯電路≥1
圖4-9移位器邏輯電路4.3.2帶符號數(shù)的舍入操作在算術(shù)右移時,由于受到硬件的限制,運算結(jié)果有可能需要舍去一定的尾數(shù),這會造成一些誤差。為了縮小誤差,就要進行舍入處理。假定經(jīng)過運算后的數(shù)共有p+q位,現(xiàn)僅允許保留前p位。常見的舍入方法有:⑴恒舍(切斷)無論多余部分q位為何代碼,一律舍去,保留部分的p位不作任何改變。4.3.2帶符號數(shù)的舍入操作(續(xù))⑵馮·諾依曼舍入法這種舍入法又稱為恒置1法,即不論多余部分q位為何代碼,都把保留部分p位的最低位置1。⑶下舍上入法
下舍上入就是0舍1入。用將要舍去的q位的最高位作為判斷標志,以決定保留部分是否加1。如該位為0,則舍去整個q位(相當于恒舍);如該位為1,則在保留的p位的最低位上加1。4.3.2帶符號數(shù)的舍入操作(續(xù))
⑷查表舍入法查表舍入法又稱ROM舍入法,因為它用ROM來存放舍入處理表,每次經(jīng)查表來讀得相應(yīng)的處理結(jié)果。通常,ROM表的容量為2K個單元,每個單元字長為K-1位。舍入處理表的內(nèi)容設(shè)置一般采用的方法是:當K位數(shù)據(jù)的高K-1位為全“1”時,讓那些單元按恒舍法填入K-1位全“1”,其余單元都按下舍上入法來填其內(nèi)容。4.4定點乘法運算
在計算機中,乘法運算大多數(shù)由累加與移位來實現(xiàn),也有些機器中具有由大規(guī)模集成電路制造的陣列乘法模塊。4.4.1原碼一位乘法1.原碼一位乘法算法
原碼一位乘法是從手算演變而來的,即用兩個操作數(shù)的絕對值相乘,乘積的符號為兩操作數(shù)符號的異或值(同號為正,異號為負)。
乘積P=|X|×|Y|
符號Ps=Xs⊕Ys式中:Ps為乘積的符號,Xs和Ys為被乘數(shù)和乘數(shù)的符號。1.原碼一位乘法算法(續(xù))原碼一位乘法的規(guī)則:⑴參加運算的操作數(shù)取其絕對值;⑵令乘數(shù)的最低位為判斷位,若為“1”,加被乘數(shù),若為“0”,不加被乘數(shù)(加0);
⑶累加后的部分積以及乘數(shù)右移一位;
⑷重復(fù)n次⑵和⑶;
⑸符號位單獨處理,同號為正,異號為負。
1.原碼一位乘法算法(續(xù))通常,乘法運算需要3個寄存器。被乘數(shù)存放在B寄存器中;乘數(shù)存放在C寄存器中;A寄存器用來存放部分積與最后乘積的高位部分,它的初值為0。運算結(jié)束后寄存器C中不再保留乘數(shù),改為存放乘積的低位部分。例8:已知:X=0.1101,Y=-0.1011,求:X×Y。|X|=00.1101→B,|Y|=0.1011→C,0→A原碼一位乘法示例
AC說明00.00001011+|X|00.1101C4=1,+|X|00.1101→00.01101101部分積右移一位01.0011+|X|00.1101C4=1,+|X|→00.10011110部分積右移一位+000.0000
C4=0,+000.1001→00.01001111部分積右移一位+|X|00.1101C4=1,+|X|01.0001→00.10001111部分積右移一位∵PS=XS⊕YS=0⊕1=1∴XY=-0.10001111
原碼一位乘法流程圖圖4-11原碼一位乘法流程圖2.原碼一位乘法運算的實現(xiàn)圖4-12中A、B是n+2位的寄存器,C是n位的寄存器,A寄存器和C寄存器是級聯(lián)在一起的,它們都具有右移一位的功能,在右移控制信號的作用下,A寄存器最低一位的值將移入C寄存器的最高位。C寄存器的最低位的值作為字級與門的控制信號,以控制加被乘數(shù)還是不加被乘數(shù)(即加0)。C寄存器中的乘數(shù)在逐次右移過程中將逐步丟失,取而代之的是乘積的低位部分。原碼一位乘法運算器電路中除去三個寄存器外,還需要一個n+2位的加法器、一個計數(shù)器、n+2個與門(控制是否加被乘數(shù))和一個異或門(處理符號位)。4.4.2補碼一位乘法雖然原碼乘法比補碼乘法容易實現(xiàn),但因為補碼加減法簡單,在以加減運算為主的通用機中操作數(shù)都用補碼表示,所以這類計算機在做乘法時常使用補碼乘法。1.校正法校正法是將[X]補和[Y]補按原碼規(guī)則運算,所得結(jié)果根據(jù)情況再加以校正,從而得到正確的[X×Y]補。補碼乘法的統(tǒng)一表達式:
[X×Y]補=[X]補×(0.Y1Y2…Yn)+[-X]補×Ys2.比較法——Booth乘法
遞推公式:[Z0]補=0[Z1]補=2-1{[Z0]補+(Yn+1-Yn)[X]補}[Z2]補=2-1{[Z1]補+(Yn-Yn-1)[X]補}
┇[Zn]補=2-1{[Zn-1]補+(Y2-Y1)[X]補}
∴[X×Y]補=[Zn]補+(Y1-Ys)[X]補式中,[Z0]補為初始部分積,[Z1]補~[Zn]補依次為各次求得的累加并右移之后的部分積。
2.比較法——Booth乘法
(續(xù))
Booth乘法規(guī)則:⑴參加運算的數(shù)用補碼表示;⑵符號位參加運算;⑶乘數(shù)最低位后面增加一位附加位Yn+1,其初值為0;⑷由于每求一次部分積要右移一位,所以乘數(shù)的最低兩位Yn、Yn+1的值決定了每次應(yīng)執(zhí)行的操作;⑸移位按補碼右移規(guī)則進行;⑹共需做n+1次累加,n次移位,第n+1次不移位。Booth乘法運算操作判斷位YnYn+1
操作00原部分積右移一位01原部分積加[X]補后右移一位10原部分積加[-X]補后右移一位11原部分積右移一位2.比較法——Booth乘法
(續(xù))
由于符號位要參加運算,部分積累加時最高有效位產(chǎn)生的進位可能會侵占符號位,故被乘數(shù)和部分積應(yīng)取雙符號位,而乘數(shù)只需要一位符號位。運算時仍需要有3個寄存器,各自的作用與原碼時相同,只不過存放的內(nèi)容均為補碼表示而已。例9:已知X=-0.1101,Y=0.1011;求X×Y。[X]補=11.0011→B,[Y]補=0.1011→C,0→A
[-X]補=00.1101Booth乘法示例
AC附加位說明00.00000.10110+[-X]補00.1101C4C5=10,+[-X]補00.1101→00.0110101011部分積右移一位+000.0000C4C5=11,+000.0110→00.0011010101部分積右移一位+[X]補11.0011C4C5=01,+[X]補11.0110→11.1011001010部分積右移一位+[-X]補00.1101C4C5=10,+[-X]補00.1000→00.0100000101部分積右移一位+[X]補11.0011C4C5=01,+[X]補11.0111∵[XY]補=1.01110001∴XY=-0.10001111Booth乘法流程圖圖4-13Booth乘法流程圖3.Booth乘法運算的實現(xiàn)各器件的作用與原碼一位乘法相同,A、B寄存器長n+2位,C寄存器長n+1位,還需一個n+2位的加法器、n+2個與或門和一個計數(shù)器。由C寄存器的最低兩位CnCn+1來控制是加/減被乘數(shù)還是加0,當CnCn+1=01時,加被乘數(shù),即加B寄存器的內(nèi)容;CnCn+1=10時,減被乘數(shù),即加上B寄存器中內(nèi)容的反,并在加法器的最低位加1;CnCn+1=00或11時,不加也不減(加0)。由于符號位參與運算,所以不需要專門處理符號位的異或門。4.4.3補碼兩位乘法為了提高乘法的執(zhí)行速度,可以選用兩位乘法的方案。所謂兩位乘法,就是每次處理乘數(shù)中的兩位,從而使乘法的速度提高了一倍。根據(jù)Booth乘法方便地推導(dǎo)出補碼兩位乘法,即把補碼兩位乘理解為將Booth乘法的兩次合并為一次來做。
補碼兩位乘法操作Yn-1YnYn+1000+0,右移2位001+[X]補,右移2位010+[X]補,右移2位011+2[X]補,右移2位100+2[-X]補,右移2位101+[-X]補,右移2位110+[-X]補,右移2位111+0,右移2位4.4.3補碼兩位乘法(續(xù))被乘數(shù)和部分積取3符號位,當乘數(shù)的數(shù)值位n為偶數(shù)時,乘數(shù)取兩符號位,共需作+1次累加,次移位(最后一次不移位);當n為奇數(shù)時,乘數(shù)只需一個符號位,共需次累加和移位,但最后一次僅移一位。
例10:已知:X=0.0110011,Y=-0.0110010,求:X×Y。[X]補=000.0110011→B,[Y]補=1.1001110→C,0→A2[X]補=000.1100110,[-X]補=111.1001101,2[-X]補=111.0011010補碼兩位乘法示例
AC附加位+2[-X]補111.0011010000.00000001.10011100
111.00110102→111.1100110101100111
+0
000.0000000111.11001102→111.1111001101011001
+[X]補000.0110011000.01011002→000.0001011001010110
+[-X]補111.1001101111.10110001→111.1101100000101011
∴[X×Y]補=1.11011000001010
X×Y=-0.00100111110110
4.5定點除法運算除法是乘法的逆運算,與乘法運算的處理思想相似,可以將n位除轉(zhuǎn)化成若干次“減法-移位”,也有些計算機具有由大規(guī)模集成電路制造的陣列除法模塊。4.5.1原碼除法運算1.原碼比較法和恢復(fù)余數(shù)法⑴比較法比較法類似于手工運算,只是為了便于機器操作,將除數(shù)右移改為部分余數(shù)左移,每一位的上商直接寫到寄存器的最低位。設(shè)A寄存器中存放被除數(shù)(或部分余數(shù)),B寄存器中存放除數(shù),C寄存器用來存放商Q,若A≥B,則上商1,并減除數(shù);若A<B,則上商0。比較法需要設(shè)置比較線路,從而增加了硬件的代價。圖4-16(a)比較過程流程
1.原碼比較法和恢復(fù)余數(shù)法(續(xù))
⑵恢復(fù)余數(shù)法恢復(fù)余數(shù)法是直接作減法試探方法,不管被除數(shù)(或部分余數(shù))減除數(shù)是否夠減,都一律先做減法。若部分余數(shù)為正,表示夠減,該位商上“1”;若部分余數(shù)為負,表示不夠減,該位商上“0”,并要恢復(fù)余數(shù)。圖4-16(b)恢復(fù)余數(shù)過程流程1.原碼比較法和恢復(fù)余數(shù)法(續(xù))由于部分余數(shù)的正、負是根據(jù)不同的操作數(shù)組合隨機出現(xiàn)的,恢復(fù)除數(shù)法會使得除法運算的實際操作次數(shù)不固定,從而導(dǎo)致控制電路比較復(fù)雜。而且在恢復(fù)余數(shù)時,要多作一次加法,降低了除法的執(zhí)行速度。因此,原碼恢復(fù)余數(shù)法在計算機中一般很少采用。2.原碼不恢復(fù)余數(shù)法(原碼加減交替法)原碼不恢復(fù)余數(shù)法是對恢復(fù)余數(shù)法的一種改進,它減少了浪費的加法時間,且運算的次數(shù)固定,故被廣泛采用。在恢復(fù)余數(shù)法中,若第i-1次求商的部分余數(shù)為ri-1,則第i次求商操作為:ri=2ri-1-Y,若夠減,部分余數(shù)ri=2ri-1-Y>0,商1。
若不夠減,部分余數(shù)ri=2ri-1-Y<0,商0,恢復(fù)余數(shù)后,ri’=ri+Y=2ri-1,然后再左移一位,進行第i+1次操作:
ri+1=2ri’-Y=2(ri+Y)-Y=2ri+2Y-Y=2ri+Y2.原碼不恢復(fù)余數(shù)法(續(xù))原碼不恢復(fù)余數(shù)除法由下面的通式表示:
ri+1=2ri+(1-2Qi)Y
式中Qi為第i次所得的商,若部分余數(shù)為正,則Qi=1,部分余數(shù)左移一位,下一次繼續(xù)減除數(shù);若部分余數(shù)為負,則Qi=0,部分余數(shù)左移一位,下一次加除數(shù)。由于加減運算交替地進行,故稱為原碼加減交替法。2.原碼不恢復(fù)余數(shù)法(續(xù))除法運算需要3個寄存器。A和B寄存器分別用來存放被除數(shù)和除數(shù),C寄存器用來存放商,它的初值為0。運算過程中A寄存器的內(nèi)容為部分余數(shù),它將不斷地變化,最后剩下的是擴大了若干倍的余數(shù),只有將它乘上2-n才是真正的余數(shù)。例12:已知:X=-0.10101,Y=0.11110,求:X÷Y。|X|=00.10101→A,|Y|=00.11110→B,0→C[|Y|]變補=11.00010原碼不恢復(fù)余數(shù)除法示例
AC說明00.101010.00000+[|Y|]變補11.00010-|Y|11.101110.00000
余數(shù)為負,商0←11.01110左移一位+|Y|00.11110+|Y|00.011000.00001
余數(shù)為正,商1←00.11000左移一位+[|Y|]變補11.00010-|Y|11.110100.00010
余數(shù)為負,商0←11.10100左移一位+|Y|00.11110+|Y|00.100100.00101
余數(shù)為正,商1←01.00100左移一位+[|Y|]變補11.00010-|Y|00.001100.01011
余數(shù)為正,商1←00.01100左移一位+[|Y|]變補11.00010-|Y|11.011100.10110
余數(shù)為負,商0+|Y|00.11110恢復(fù)余數(shù),+|Y|00.01100原碼不恢復(fù)余數(shù)除法示例(續(xù))經(jīng)過原碼不恢復(fù)余數(shù)除法,有:商=0.10110余數(shù)=0.011002-5∴X÷Y=-(0.10110+)0.011002-50.11110原碼加減交替除法流程圖圖4-17原碼加減交替除法流程圖2.原碼不恢復(fù)余數(shù)法(續(xù))在定點除法運算時,為了防止溢出,要求被除數(shù)的絕對值小于除數(shù)的絕對值,|X|<|Y|(|X|=|Y|除外),且除數(shù)不能為0。因此第一次減除數(shù)肯定是不夠減的,如果我們采用先移位后減除數(shù)的方法,得到的結(jié)果也是相同的。另外,在原碼加減交替法中,當最終余數(shù)為負數(shù)時,必須恢復(fù)一次余數(shù),使之變?yōu)檎鄶?shù),注意此時不需要再左移了。
3.原碼加減交替除法的實現(xiàn)
圖4-18中A、B寄存器長n+2位,C寄存器長n+1位,還需一個n+2位的加法器、n+2個與或門、一個計數(shù)器和一個異或門。應(yīng)當注意,A寄存器和C寄存器是級聯(lián)在一起的,它們都具有左移一位的功能,在左移控制信號的作用下,C寄存器最高位的值將移入A寄存器的最低位。A寄存器中的初值是被除數(shù),但在運算過程中將變?yōu)椴糠钟鄶?shù)。C寄存器的最低位用來保存每次運算得到的商值,此商值同時也作為下一次操作是做加法還是做減法的控制信號。4.5.2補碼除法運算1.夠減的判斷
參加運算的兩個數(shù)符號任意,當被除數(shù)(或部分余數(shù))的絕對值大于或等于除數(shù)的絕對值時,稱為夠減;反之稱為不夠減。當兩數(shù)同號時,實際應(yīng)作減法;兩數(shù)異號時,實際應(yīng)作加法。
判斷的方法和結(jié)果如下:當被除數(shù)(或部分余數(shù))與除數(shù)同號時,如果得到的新部分余數(shù)與除數(shù)同號,表示夠減,否則為不夠減;當被除數(shù)(或部分余數(shù))與除數(shù)異號時,如果得到的新部分余數(shù)與除數(shù)異號,表示夠減,否則為不夠減。
2.上商規(guī)則補碼除法運算的商也是用補碼表示的,上商的規(guī)則是:如果[X]補和[Y]補同號,則商為正數(shù),夠減時上商“1”,不夠減時上商“0”;如果[X]補和[Y]補異號,則商為負數(shù),夠減時上商“0”,不夠減時上商“1”。補碼的上商規(guī)則可歸結(jié)為:
部分余數(shù)[ri]補和除數(shù)[Y]補同號,商上“1”,反之,商上“0”。
3.商符的確定
商符是在求商的過程中自動形成的,按補碼上商規(guī)則,第一次得出的商,就是實際應(yīng)得的商符。為了防止溢出,必須有|X|<|Y|,所以第一次肯定不夠減。當被除數(shù)與除數(shù)同號時,部分余數(shù)與除數(shù)必然異號,商上“0”,恰好與商符一致;當被除數(shù)與除數(shù)異號,部分余數(shù)與除數(shù)必然同號,商上“1”,也恰好就是商的符號。
4.求新部分余數(shù)求新部分余數(shù)[ri+1]補的通式如下:
[ri+1]補=2[ri]補+(1-2Qi)×[Y]補
Qi表示第i步的商。若商上“1”,下一步操作為部分余數(shù)左移一位,減去除數(shù);若商上“0”,下一步操作為部分余數(shù)左移一位,加上除數(shù)。5.末位恒置1商的最末一位恒置為“1”,運算的最大誤差為2-n。此法操作簡單,易于實現(xiàn)。
補碼加減交替除法規(guī)則[X]補與[Y]補第一次操作[ri]補與[Y]補上商求新余數(shù)[ri+1]補的操作同號[X]補-[Y]補①同號(夠減)1[ri+1]補=2[ri]補-[Y]補②異號(不夠減)0[ri+1]補=2[ri]補+[Y]補異號[X]補+[Y]補①同號(不夠減)1[ri+1]補=2[ri]補-[Y]補②異號(夠減)0[ri+1]補=2[ri]補+[Y]補補碼加減交替除法示例例13:已知X=0.1000,Y=-0.1010;求X÷Y。[X]補=00.1000→A,
[Y]補=11.0110→B,0→C[-Y]補=00.1010補碼加減交替除法示例(續(xù))
AC說明00.10000.0000+[Y]補11.0110[X]補、[Y]補異號,+[Y]補←11.1100左移一位+[-Y]補00.1010+[-Y]補00.01100.0010[ri]補、[Y]補異號,商0←00.1100左移一位+[Y]補11.0110+[Y]補00.00100.0100[ri]補、[Y]補異號,商0+[Y]補11.0110+[Y]補11.10100.1001[ri]補、[Y]補同號,商1←11.0100左移一位+[-Y]補00.1010+[-Y]補11.11101.0011末位恒置111.11100.0001[ri]補、[Y]補同號,商1←00.0100左移一位補碼加減交替除法示例(續(xù))[商]補=1.0011[余數(shù)]補=1.11102-4∴商=-0.1101余數(shù)=-0.00102-41.11102-41.0110[X÷Y]補=1.0011+-0.00102-4-0.1010X÷Y=-0.1101+補碼加減交替除法流程圖圖4-19補碼加減交替除法流程圖習(xí)題講解1、已知X和Y,試用它們的變形補碼計算出X+Y,并指出結(jié)果是否溢出。(1)X=0.11011,Y=0.11111[X]補=0.11011,[Y]補=0.1111100.11011[X]補00.11111[Y]補01.11010[X+Y]補Ss1Ss2溢出=Ss1⊕Ss2=1,Ss1
=0,結(jié)果為正溢(2)X=0.11011,Y=-0.10101[X]補=0.11011,[Y]補=1.0101100.11011[X]補11.01011[Y]補00.00110[X+Y]補Ss1Ss2溢出=Ss1⊕Ss2=0,不溢出。X+Y=0.00110小結(jié):補充符號位,并參與運算,利用符號位進行異或運算判斷是否溢出,如溢出則看Ss1是0/1,為0對應(yīng)為正溢,為1對應(yīng)為負溢。2、已知:X=0.1011,Y=-0.0101。求[X/2]補[-X]補,[Y/4]補[-Y]補。X=0.1011,X/2=0.0101,[X/2]補=0.0101,-X=-0.1011,[-X]補=1.0101;Y=-0.0101,Y/4=-0.0010,[Y/4]補=1.1110,-Y=0.0101,[-Y]補=0.0101。3、用原碼乘法計算X*Y,X=0.11011,Y=-0.11111。|X|=0.11011,|Y|=0.1111100.0000011111+|X|00.1101100.1101111111右移一位
00.0110111111+|X|00.1101101.0100011111右移一位00.1010001111+|X|00.1101101.0111101111右移一位00.1011110111+|X|00.110110
溫馨提示
- 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)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 3-1 密度 第一課時
- 防錯法課件培訓(xùn)資料
- 福建龍巖一中2024年高三3月聯(lián)合調(diào)研考試數(shù)學(xué)試題試卷
- 2024年山南客運資格證模擬考試
- 2024年安慶客運資格證考試試題模擬
- 2024年玉樹客運資格證考試題庫下載
- 2024年大興安嶺客運從業(yè)資格證摸擬題
- 2016 弗雷德.霍洛基金會項目資金合作伙伴財務(wù)管理指南(20份單面)
- 吉首大學(xué)《BIM應(yīng)用概論》2021-2022學(xué)年第一學(xué)期期末試卷
- 吉林藝術(shù)學(xué)院《西方音樂史與欣賞Ⅰ》2021-2022學(xué)年第一學(xué)期期末試卷
- 車牌識別一體機安裝調(diào)試教程
- 客戶接觸點管理課件
- Python語言學(xué)習(xí)通超星課后章節(jié)答案期末考試題庫2023年
- 海報設(shè)計教學(xué)課件完整版講課講稿
- 年產(chǎn)30萬噸碳酸鈣粉建設(shè)項目可行性研究報告
- 0-6歲兒童健康管理服務(wù)規(guī)范(第三版)
- 公務(wù)員晉升職級現(xiàn)實表現(xiàn)材料三篇
- 藥物警戒內(nèi)審檢查記錄表
- 一元一次不等式復(fù)習(xí)(公開課)
- 中國書法-英文 chinese calligraphy
- 大班社會領(lǐng)域《走進新疆》
評論
0/150
提交評論