版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、1,王學(xué)榮,計(jì)算機(jī)組成原理,2,第4章數(shù)值的機(jī)器運(yùn)算,3,運(yùn)算器是計(jì)算機(jī)進(jìn)行算術(shù)運(yùn)算和邏輯運(yùn)算的主要部件,運(yùn)算器的邏輯結(jié)構(gòu)取決于機(jī)器的指令系統(tǒng)、數(shù)據(jù)表示方法和運(yùn)算方法等。本章主要討論數(shù)值數(shù)據(jù)在計(jì)算機(jī)中實(shí)現(xiàn)算術(shù)運(yùn)算和邏輯運(yùn)算的方法,以及運(yùn)算部件的基本結(jié)構(gòu)和工作原理。,4,本章學(xué)習(xí)內(nèi)容,4.1 基本算術(shù)運(yùn)算的實(shí)現(xiàn) 4.2 定點(diǎn)加減運(yùn)算 4.3 帶符號(hào)數(shù)的移位和舍入操作 4.4 定點(diǎn)乘法運(yùn)算 4.5 定點(diǎn)除法運(yùn)算 4.6 規(guī)格化浮點(diǎn)運(yùn)算 4.7 十進(jìn)制整數(shù)的加法運(yùn)算 4.8 邏輯運(yùn)算與實(shí)現(xiàn) 4.9 運(yùn)算器的基本組成與實(shí)例,5,本章學(xué)習(xí)要求,掌握:定點(diǎn)補(bǔ)碼加法和減法運(yùn)算方法 理解:3種溢出檢測(cè)方法 理
2、解:補(bǔ)碼移位運(yùn)算和常見(jiàn)的舍入操作方法 了解:串行加法器與并行加法器 理解:進(jìn)位產(chǎn)生和進(jìn)位傳遞 掌握:定點(diǎn)原碼、補(bǔ)碼乘法運(yùn)算方法 掌握:定點(diǎn)原碼、補(bǔ)碼加減交替除法運(yùn)算方法 理解:浮點(diǎn)加減乘除運(yùn)算 理解:邏輯運(yùn)算 了解:運(yùn)算器的基本結(jié)構(gòu)及浮點(diǎn)協(xié)處理器,6,4.1 基本算術(shù)運(yùn)算的實(shí)現(xiàn),計(jì)算機(jī)中最基本的算術(shù)運(yùn)算是加法運(yùn)算,不論加、減、乘、除運(yùn)算最終都可以歸結(jié)為加法運(yùn)算。所以在此討論最基本的運(yùn)算部件加法器,以及并行加法器的進(jìn)位問(wèn)題。,7,4.1.1 加法器,1.全加器 全加器(FA)是最基本的加法單元,它有三個(gè)輸入量:操作數(shù)Ai和Bi、低位傳來(lái)的進(jìn)位Ci-1,兩個(gè)輸出量:本位和Si、向高位的進(jìn)位Ci。
3、圖4-1 全加器的邏輯框圖,8,全加器真值表,9,根據(jù)真值表,可得到全加器的邏輯表達(dá)式為: Si=AiBiCi-1 Ci=AiBi+(AiBi)Ci-1,全加器的邏輯表達(dá)式,10,2.串行加法器與并行加法器,加法器有串行和并行之分。在串行加法器中,只有一個(gè)全加器,數(shù)據(jù)逐位串行送入加法器進(jìn)行運(yùn)算;并行加法器則由多個(gè)全加器組成,其位數(shù)的多少取決于機(jī)器的字長(zhǎng),數(shù)據(jù)的各位同時(shí)運(yùn)算。,11,串行加法器具有器件少、成本低的優(yōu)點(diǎn),但運(yùn)算速度太慢,所以除去某些低速的專用運(yùn)算器外很少采用。 并行加法器可同時(shí)對(duì)數(shù)據(jù)的各位相加,但存在著一個(gè)加法的最長(zhǎng)運(yùn)算時(shí)間問(wèn)題。這是因?yàn)殡m然操作數(shù)的各位是同時(shí)提供的,但低位運(yùn)算所產(chǎn)
4、生的進(jìn)位會(huì)影響高位的運(yùn)算結(jié)果。例如:1111和0001相加,最低位產(chǎn)生的進(jìn)位將逐位影響至最高位,因此,并行加法器的最長(zhǎng)運(yùn)算時(shí)間主要是由進(jìn)位信號(hào)的傳遞時(shí)間決定的,而每個(gè)全加器本身的求和延遲只是次要因素。很明顯,提高并行加法器速度的關(guān)鍵是盡量加快進(jìn)位產(chǎn)生和傳遞的速度。,2.串行加法器與并行加法器(續(xù)),12,并行加法器中的每一個(gè)全加器都有一個(gè)從低位送來(lái)的進(jìn)位輸入和一個(gè)傳送給高位的進(jìn)位輸出。我們將傳遞進(jìn)位信號(hào)的邏輯線路連接起來(lái)構(gòu)成的進(jìn)位網(wǎng)絡(luò)稱為進(jìn)位鏈。每一位的進(jìn)位表達(dá)式為: Ci=AiBi+(AiBi)Ci-1 其中:Gi=AiBi為進(jìn)位產(chǎn)生函數(shù) Pi=AiBi為進(jìn)位傳遞函數(shù) 進(jìn)位表達(dá)式Ci=Gi+
5、PiCi-1,4.1.2 進(jìn)位的產(chǎn)生和傳遞,13,圖4-3 串行進(jìn)位的并行加法器 其中:C1=G1+P1C0 C2=G2+P2C1 Cn=Gn+PnCn-1,串行進(jìn)位的并行加法器,14,4.1.2 進(jìn)位的產(chǎn)生和傳遞(續(xù)),串行進(jìn)位的并行加法器的總延遲時(shí)間與字長(zhǎng)成正比,字長(zhǎng)越長(zhǎng),總延遲時(shí)間就越長(zhǎng)。假定,將一級(jí)“與門”、“或門”的延遲時(shí)間定為ty,從上述公式中可看出,每一級(jí)全加器的進(jìn)位延遲時(shí)間為2ty。在字長(zhǎng)為n位的情況下,若不考慮Gi、Pi的形成時(shí)間,從C0Cn的最長(zhǎng)延遲時(shí)間為2nty(設(shè)C0為加法器最低位的進(jìn)位輸入,Cn為加法器最高位的進(jìn)位輸出)。,15,1.并行進(jìn)位方式 并行進(jìn)位又叫先行進(jìn)位
6、、同時(shí)進(jìn)位,其特點(diǎn)是各級(jí)進(jìn)位信號(hào)同時(shí)形成。 C1=G1+PC0 C2=G2+P2C1=G2+P2G1+P2P1C0 C3=G3+P3C2=G3+P3G2+P3P2G1+P3P2P1C0 C4=G4+P4C3=G4+P4G3+P4P3G2+P4P3P2G1 +P4P3P2P1C0 ,4.1.3 并行加法器的快速進(jìn)位,16,這種進(jìn)位方式是快速的,若不考慮Gi、Pi的形成時(shí)間,從C0Cn的最長(zhǎng)延遲時(shí)間僅為2ty,而與字長(zhǎng)無(wú)關(guān)。但是隨著加法器位數(shù)的增加,Ci的邏輯表達(dá)式會(huì)變得越來(lái)越長(zhǎng),輸入變量會(huì)越來(lái)越多,這會(huì)使電路結(jié)構(gòu)變得很復(fù)雜,所以完全采用并行進(jìn)位是不現(xiàn)實(shí)的。,1.并行進(jìn)位方式(續(xù)),17,單級(jí)先行
7、進(jìn)位方式(組內(nèi)并行、組間串行) 以16位加法器為例,可分為4組,每組4位。第一小組組內(nèi)的進(jìn)位邏輯函數(shù)C1、C2、C3、C4的表達(dá)式與前述相同,它們是同時(shí)產(chǎn)生的,實(shí)現(xiàn)上述進(jìn)位邏輯函數(shù)的電路稱之為4位先行進(jìn)位電路CLA,其延遲時(shí)間是2ty。 利用這種4位的CLA電路以及進(jìn)位產(chǎn)生/傳遞電路和求和電路可以構(gòu)成4位的CLA加法器。用4個(gè)這樣的CLA加法器,很容易構(gòu)成16位的單級(jí)先行進(jìn)位加法器。,2.分組并行進(jìn)位方式,18,16位單級(jí)先行進(jìn)位加法器,圖4-4 16位單級(jí)先行進(jìn)位加法器,19,16位單級(jí)先行進(jìn)位時(shí)間圖,圖4-5 16位單級(jí)先行進(jìn)位時(shí)間圖,20,多級(jí)先行進(jìn)位方式(組內(nèi)并行、組間并行) 仍以字長(zhǎng)
8、為16位的加法器作為例子,分析兩級(jí)先行進(jìn)位加法器的設(shè)計(jì)方法。第一小組的進(jìn)位輸出C4可以變成兩個(gè)與項(xiàng)相或: C4=G4+P4G3+P4P3G2+P4P3P2G1+P4P3P2P1C0 =G1*+P1*C0 其中:G1*=G4+P4G3+P4P3G2+P4P3P2G1 P1*=P4P3P2P1 Gi*稱為組進(jìn)位產(chǎn)生函數(shù) Pi*稱為組進(jìn)位傳遞函數(shù),2.分組并行進(jìn)位方式(續(xù)),21,依次類推,可以得到: C8=G2*+P2*C4=G2*+P2*G1*+P2*P1*C0 C12=G3*+P3*G2+P3*P2*G1*+P3*P2*P1*C0 C16=G4*+P4*G3*+P4*P3*G2*+P4*P3*
9、P2*G1* +P4*P3*P2*P1*C0,2.分組并行進(jìn)位方式(續(xù)),22,成組先行進(jìn)位電路BCLA,其延遲時(shí)間是2ty。利用這種4位的BCLA電路以及進(jìn)位產(chǎn)生/傳遞電路和求和電路可以構(gòu)成4位的BCLA加法器。16位的兩級(jí)先行進(jìn)位加法器可由4個(gè)BCLA加法器和1個(gè)CLA電路組成。,2.分組并行進(jìn)位方式(續(xù)),23,16位兩級(jí)先行進(jìn)位加法器,圖4-6 16位兩級(jí)先行進(jìn)位加法器,24,若不考慮Gi、Pi的形成時(shí)間,C0經(jīng)過(guò)2ty產(chǎn)生第一小組的C1、C2、C3及所有組進(jìn)位產(chǎn)生函數(shù)Gi*和組進(jìn)位傳遞函數(shù)Pi*;再經(jīng)過(guò)2ty,由CLA電路產(chǎn)生C4、C8、C12、C16;再經(jīng)過(guò)2ty后,才能產(chǎn)生第二、
10、三、四小組內(nèi)的C5C7、C9C11、C13C15。此時(shí)加法器的最長(zhǎng)進(jìn)位延遲時(shí)間是6ty。,2.分組并行進(jìn)位方式(續(xù)),25,16位兩級(jí)先行進(jìn)位時(shí)間圖,圖4-7 16位兩級(jí)先行進(jìn)位時(shí)間圖,26,定點(diǎn)數(shù)的加減運(yùn)算包括原碼、補(bǔ)碼和反碼3種帶符號(hào)數(shù)的加減運(yùn)算,其中補(bǔ)碼加減運(yùn)算實(shí)現(xiàn)起來(lái)最方便。,4.2 定點(diǎn)加減運(yùn)算,27,原碼加減運(yùn)算規(guī)則: 參加運(yùn)算的操作數(shù)取其絕對(duì)值; 若做加法,則兩數(shù)直接相加,若做減法,則將減數(shù)先變一次補(bǔ),再進(jìn)行加法運(yùn)算; 運(yùn)算之后,可能有兩種情況: 有進(jìn)位,結(jié)果為正,即得到正確的結(jié)果。 無(wú)進(jìn)位,結(jié)果為負(fù),則應(yīng)再變一次補(bǔ),才能得到正確的結(jié)果。 結(jié)果加上符號(hào)位。 通常,把運(yùn)算之前的變補(bǔ)
11、稱為前變補(bǔ),運(yùn)算之后的變補(bǔ)稱為后變補(bǔ)。,4.2.1 原碼加減運(yùn)算,28,4.2.2 補(bǔ)碼加減運(yùn)算,1.補(bǔ)碼加法 兩個(gè)補(bǔ)碼表示的數(shù)相加,符號(hào)位參加運(yùn)算,且兩數(shù)和的補(bǔ)碼等于兩數(shù)補(bǔ)碼之和,即: X+Y補(bǔ)=X補(bǔ)+Y補(bǔ),29,根據(jù)補(bǔ)碼加法公式可推出: X-Y補(bǔ)=X+(-Y)補(bǔ)=X補(bǔ)+-Y補(bǔ) 從補(bǔ)碼減法公式可以看出,只要求得-Y補(bǔ),就可以變減法為加法。不管Y的真值為正或?yàn)樨?fù),已知Y補(bǔ)求-Y補(bǔ)的方法是:將Y補(bǔ)連同符號(hào)位一起求反,末尾加“1” 。-Y補(bǔ)被稱為Y補(bǔ)的機(jī)器負(fù)數(shù),由Y補(bǔ)求-Y補(bǔ)的過(guò)程稱為對(duì)Y補(bǔ)變補(bǔ)(求補(bǔ)),表示為 -Y補(bǔ)=Y補(bǔ)變補(bǔ),2.補(bǔ)碼減法,30,2.補(bǔ)碼減法(續(xù)),“某數(shù)的補(bǔ)碼表示”與“變補(bǔ)”
12、是兩個(gè)不同的概念。一個(gè)負(fù)數(shù)由原碼轉(zhuǎn)換成補(bǔ)碼時(shí),符號(hào)位是不變的,僅對(duì)數(shù)值位各位變反,末位加“1”。而變補(bǔ)則不論這個(gè)數(shù)的真值是正是負(fù),一律連同符號(hào)位一起變反,末位加“1”。Y補(bǔ)表示的真值如果是正數(shù),則變補(bǔ)后-Y補(bǔ)所表示的真值變?yōu)樨?fù)數(shù),反之亦然。 例1:Y=-0.0110, Y原=1.0110, Y補(bǔ)=1.1010, -Y補(bǔ)=0.0110 例2:Y=0.0110, Y原=0.0110, Y補(bǔ)=0.0110, -Y補(bǔ)=1.1010,31,參加運(yùn)算的兩個(gè)操作數(shù)均用補(bǔ)碼表示; 符號(hào)位作為數(shù)的一部分參加運(yùn)算; 若做加法,則兩數(shù)直接相加,若做減法,則將被減數(shù)與減數(shù)的機(jī)器負(fù)數(shù)相加; 運(yùn)算結(jié)果仍用補(bǔ)碼表示。,3.
13、補(bǔ)碼加減運(yùn)算規(guī)則,32,例3:A=0.1011,B=-0.1110,求A+B A補(bǔ)=0.1011 B補(bǔ)=1.0010 0.1011 A補(bǔ) + 1.0010 B補(bǔ) 1.1101 A+B補(bǔ) A+B補(bǔ)=1.1101 A+B=-0.0011,補(bǔ)碼加法示例,33,例4:A=0.1011,B=-0.0010,求A-B A補(bǔ)=0.1011 B補(bǔ)=1.1110 -B補(bǔ)=0.0010 0.1011 A補(bǔ) + 0.0010 -B補(bǔ) 0.1101 A-B補(bǔ) A-B補(bǔ)=0.1101 A-B=0.1101,補(bǔ)碼減法示例,34,4.2.3 補(bǔ)碼的溢出判斷與檢測(cè)方法,1.溢出的產(chǎn)生 在補(bǔ)碼運(yùn)算中,若兩個(gè)正數(shù)相加,而結(jié)果為負(fù)
14、;兩個(gè)負(fù)數(shù)相加,而結(jié)果為正,則結(jié)果出錯(cuò)。 例5:設(shè):X=1011B=11D,Y=111B=7D 則 X補(bǔ)=0,1011,Y補(bǔ)=0,0111 0,1 0 1 1X補(bǔ) + 0,0 1 1 1Y補(bǔ) 1,0 0 1 0X+Y補(bǔ) X+Y補(bǔ)=1,0010 X+Y=-1110B=-14D 兩正數(shù)相加結(jié)果為-14D,顯然是錯(cuò)誤的。,35,1.溢出的產(chǎn)生(續(xù)),例6:設(shè):X=-1011B=-11D,Y=-111B=-7D 則 X補(bǔ)=1,0101 Y補(bǔ)=1,1001 1,0 1 0 1X補(bǔ) + 1,1 0 0 1Y補(bǔ) 0,1 1 1 0X+Y補(bǔ) X+Y補(bǔ)=0,1110 X+Y=1110B=14D 兩負(fù)數(shù)相加結(jié)果為
15、14D,顯然也是錯(cuò)誤的。,36,1.溢出的產(chǎn)生(續(xù)),字長(zhǎng)為n+1位的定點(diǎn)整數(shù)(其中一位為符號(hào)位),采用補(bǔ)碼表示,當(dāng)運(yùn)算結(jié)果大于2n-1或小于-2n時(shí),就產(chǎn)生溢出。 設(shè)參加運(yùn)算的兩數(shù)為X、Y,做加法運(yùn)算。 若X、Y異號(hào),實(shí)際上是做兩數(shù)相減,所以不會(huì)溢出。 若X、Y同號(hào),運(yùn)算結(jié)果為正且大于所能表示的最大正數(shù)或運(yùn)算結(jié)果為負(fù)且小于所能表示的最小負(fù)數(shù)(絕對(duì)值最大的負(fù)數(shù))時(shí),產(chǎn)生溢出。將兩正數(shù)相加產(chǎn)生的溢出稱為正溢;反之,兩負(fù)數(shù)相加產(chǎn)生的溢出稱為負(fù)溢。,37,2.溢出檢測(cè)方法,設(shè):被操作數(shù)為:X補(bǔ)=Xs,X1X2Xn 操作數(shù)為:Y補(bǔ)=Ys,Y1Y2Yn 其和(差)為:S補(bǔ)=Ss,S1S2Sn 采用一個(gè)符
16、號(hào)位 采用一個(gè)符號(hào)位檢測(cè)溢出時(shí),當(dāng)Xs=Ys=0,Ss=1時(shí),產(chǎn)生正溢;當(dāng)Xs=Ys=1,Ss=0時(shí),產(chǎn)生負(fù)溢。 溢出判斷條件為 溢出= Ss+Xs Ys,38,2.溢出檢測(cè)方法(續(xù)),采用進(jìn)位位判斷 兩數(shù)運(yùn)算時(shí),產(chǎn)生的進(jìn)位為 Cs,C1C2Cn, 其中:Cs為符號(hào)位產(chǎn)生的進(jìn)位,C1為最高數(shù)值位產(chǎn)生的進(jìn)位。 兩正數(shù)相加,當(dāng)最高有效位產(chǎn)生進(jìn)位(C1=1)而符號(hào)位不產(chǎn)生進(jìn)位(Cs=0)時(shí),發(fā)生正溢;兩負(fù)數(shù)相加,當(dāng)最高有效位不產(chǎn)生進(jìn)位(C1=0)而符號(hào)位產(chǎn)生進(jìn)位(Cs=1)時(shí),發(fā)生負(fù)溢。故溢出條件為 溢出= C1+Cs =CsC1,39,2.溢出檢測(cè)方法(續(xù)),采用變形補(bǔ)碼(雙符號(hào)位補(bǔ)碼) 在雙符號(hào)
17、位的情況下,把左邊的符號(hào)位Ss1叫做真符,兩個(gè)符號(hào)位都作為數(shù)的一部分參加運(yùn)算。這種編碼又稱為變形補(bǔ)碼。 雙符號(hào)位的含義如下: Ss1Ss2=00 結(jié)果為正數(shù),無(wú)溢出 Ss1Ss2=01 結(jié)果正溢 Ss1Ss2=10 結(jié)果負(fù)溢 Ss1Ss2=11 結(jié)果為負(fù)數(shù),無(wú)溢出 當(dāng)兩位符號(hào)位的值不一致時(shí),表明產(chǎn)生溢出,溢出條件為 溢出=Ss1Ss2,40,4.2.4 補(bǔ)碼定點(diǎn)加減運(yùn)算的實(shí)現(xiàn),要實(shí)現(xiàn)補(bǔ)碼加法,則需給出XF、YF和FX三個(gè)控制信號(hào),同時(shí)打開(kāi)門A、門B和門C,把寄存器X和寄存器Y的內(nèi)容送入加法器的兩個(gè)輸入端進(jìn)行加法運(yùn)算,并把結(jié)果送回,最后由打入脈沖CPX打入寄存器X。 減法與加法的不同之處在于,加
18、法使用YF控制信號(hào),減法使用 F和1F控制信號(hào),其余控制信號(hào)相同。,41,補(bǔ)碼加減運(yùn)算的邏輯電路,圖4-8 補(bǔ)碼加減運(yùn)算器框圖,1,42,在計(jì)算機(jī)中,實(shí)現(xiàn)乘除運(yùn)算的方案通常有3種: 軟件實(shí)現(xiàn)。在低檔微機(jī)中無(wú)乘除運(yùn)算指令,只能用乘法和除法子程序來(lái)實(shí)現(xiàn)乘除運(yùn)算。 在原有實(shí)現(xiàn)加減運(yùn)算的運(yùn)算器基礎(chǔ)上增加一些邏輯線路,使乘除運(yùn)算變換成加減和移位操作。在機(jī)器中設(shè)有乘除指令。 設(shè)置專用的乘、除法器,機(jī)器中設(shè)有相應(yīng)的乘除指令。 不管采用什么方案實(shí)現(xiàn)乘除法,基本原理是相同的。如果采用第種方案,則必然會(huì)涉及到移位操作。,4.3 帶符號(hào)數(shù)的移位和舍入操作,43,1.原碼的移位規(guī)則 不論正數(shù)還是負(fù)數(shù),在左移或右移時(shí),
19、符號(hào)位均不變,空出位一律以“0”補(bǔ)入。 負(fù)數(shù)的原碼移位前后結(jié)果為: 左移:移位前有:1 X1 X2 Xn-1 Xn 移位后有:1 X2 X3 Xn 0 右移:移位前有:1 X1 X2 Xn-1 Xn 移位后有:1 0 X1 Xn-2 Xn-1,4.3.1 帶符號(hào)數(shù)的移位操作,44,2.補(bǔ)碼的移位規(guī)則,正數(shù) 符號(hào)位不變,不論左移或右移,空出位一律以“0”補(bǔ)入。 負(fù)數(shù) 符號(hào)位不變,左移后的空出位補(bǔ)“0”,右移后的空出位補(bǔ)“1”。 左移:移位前有:1 X1 X2 Xn-1 Xn 移位后有:1 X2 X3 Xn 0 右移:移位前有:1 X1 X2 Xn-1 Xn 移位后有:1 1 X1 Xn-2 Xn
20、-1,45,3.移位功能的實(shí)現(xiàn),在計(jì)算機(jī)中,通常移位操作由移位寄存器來(lái)實(shí)現(xiàn),但也有一些計(jì)算機(jī)不設(shè)置專門的移位寄存器,而在加法器的輸出端加一個(gè)移位器。移位器是由與門和或門組成的邏輯電路(實(shí)際是一個(gè)多路選擇器),可以實(shí)現(xiàn)直傳(不移位)、左斜一位送(左移一位)和右斜一位送(右移一位)的功能。,46,移位器邏輯電路,1,圖4-9 移位器邏輯電路,47,4.3.2 帶符號(hào)數(shù)的舍入操作,在算術(shù)右移時(shí),由于受到硬件的限制,運(yùn)算結(jié)果有可能需要舍去一定的尾數(shù),這會(huì)造成一些誤差。為了縮小誤差,就要進(jìn)行舍入處理。假定經(jīng)過(guò)運(yùn)算后的數(shù)共有p+q位,現(xiàn)僅允許保留前p位。常見(jiàn)的舍入方法有: 恒舍(切斷) 無(wú)論多余部分q位為
21、何代碼,一律舍去,保留部分的p位不作任何改變。,48,4.3.2 帶符號(hào)數(shù)的舍入操作(續(xù)),馮諾依曼舍入法 這種舍入法又稱為恒置1法,即不論多余部分q位為何代碼,都把保留部分p位的最低位置1。 下舍上入法 下舍上入就是0舍1入。用將要舍去的q位的最高位作為判斷標(biāo)志,以決定保留部分是否加1。如該位為0,則舍去整個(gè)q位(相當(dāng)于恒舍);如該位為1,則在保留的p位的最低位上加1。,49,4.3.2 帶符號(hào)數(shù)的舍入操作(續(xù)),查表舍入法 查表舍入法又稱ROM舍入法,因?yàn)樗肦OM來(lái)存放舍入處理表,每次經(jīng)查表來(lái)讀得相應(yīng)的處理結(jié)果。通常,ROM表的容量為2K個(gè)單元,每個(gè)單元字長(zhǎng)為K-1位。舍入處理表的內(nèi)容設(shè)
22、置一般采用的方法是:當(dāng)K位數(shù)據(jù)的高K-1位為全“1”時(shí),讓那些單元按恒舍法填入K-1位全“1”,其余單元都按下舍上入法來(lái)填其內(nèi)容。,50,4.4 定點(diǎn)乘法運(yùn)算,在計(jì)算機(jī)中,乘法運(yùn)算大多數(shù)由累加與移位來(lái)實(shí)現(xiàn),也有些機(jī)器中具有由大規(guī)模集成電路制造的陣列乘法模塊。,51,4.4.1 原碼一位乘法,1.原碼一位乘法算法 原碼一位乘法是從手算演變而來(lái)的,即用兩個(gè)操作數(shù)的絕對(duì)值相乘,乘積的符號(hào)為兩操作數(shù)符號(hào)的異或值(同號(hào)為正,異號(hào)為負(fù))。 乘積P=|X|Y| 符號(hào)Ps=XsYs 式中:Ps為乘積的符號(hào),Xs和Ys為被乘數(shù)和乘數(shù)的符號(hào)。,52,1.原碼一位乘法算法(續(xù)),原碼一位乘法的規(guī)則: 參加運(yùn)算的操作
23、數(shù)取其絕對(duì)值; 令乘數(shù)的最低位為判斷位,若為“1”,加被乘數(shù),若為“0”,不加被乘數(shù)(加0); 累加后的部分積以及乘數(shù)右移一位; 重復(fù)n次和 ; 符號(hào)位單獨(dú)處理,同號(hào)為正,異號(hào)為負(fù)。,53,1.原碼一位乘法算法(續(xù)),通常,乘法運(yùn)算需要3個(gè)寄存器。被乘數(shù)存放在B寄存器中;乘數(shù)存放在C寄存器中;A寄存器用來(lái)存放部分積與最后乘積的高位部分,它的初值為0。運(yùn)算結(jié)束后寄存器C中不再保留乘數(shù),改為存放乘積的低位部分。 例8:已知:X=0.1101,Y=-0.1011,求:XY。 |X|=00.1101B,|Y|=.1011C,0A,54,原碼一位乘法示例,A C 說(shuō)明,0 0.0 0 0 0 1 0 1
24、 1,+|X| 0 0.1 1 0 1 C4=1,+|X|,0 0.1 1 0 1, 0 0.0 1 1 0 1 1 0 1 部分積右移一位,0 1.0 0 1 1,+|X| 0 0.1 1 0 1 C4=1,+|X|, 0 0.1 0 0 1 1 1 1 0 部分積右移一位,+0 0 0.0 0 0 0 C4=0,+0,0 0.1 0 0 1, 0 0.0 1 0 0 1 1 1 1 部分積右移一位,+|X| 0 0.1 1 0 1 C4=1,+|X|,0 1.0 0 0 1, 0 0.1 0 0 0 1 1 1 1 部分積右移一位,PS=XSYS=01=1 XY=-0.10001111,5
25、5,原碼一位乘法流程圖,56,2.原碼一位乘法運(yùn)算的實(shí)現(xiàn),圖4-12中A、B是n+2位的寄存器,C是n位的寄存器,A寄存器和C寄存器是級(jí)聯(lián)在一起的,它們都具有右移一位的功能,在右移控制信號(hào)的作用下,A寄存器最低一位的值將移入C寄存器的最高位。C寄存器的最低位的值作為字級(jí)與門的控制信號(hào),以控制加被乘數(shù)還是不加被乘數(shù)(即加0)。C寄存器中的乘數(shù)在逐次右移過(guò)程中將逐步丟失,取而代之的是乘積的低位部分。原碼一位乘法運(yùn)算器電路中除去三個(gè)寄存器外,還需要一個(gè)n+2位的加法器、一個(gè)計(jì)數(shù)器、n+2個(gè)與門(控制是否加被乘數(shù))和一個(gè)異或門(處理符號(hào)位)。,57,4.4.2 補(bǔ)碼一位乘法,雖然原碼乘法比補(bǔ)碼乘法容易
26、實(shí)現(xiàn),但因?yàn)檠a(bǔ)碼加減法簡(jiǎn)單,在以加減運(yùn)算為主的通用機(jī)中操作數(shù)都用補(bǔ)碼表示,所以這類計(jì)算機(jī)在做乘法時(shí)常使用補(bǔ)碼乘法。 1.校正法 校正法是將X補(bǔ)和Y補(bǔ)按原碼規(guī)則運(yùn)算,所得結(jié)果根據(jù)情況再加以校正,從而得到正確的XY補(bǔ)。補(bǔ)碼乘法的統(tǒng)一表達(dá)式: XY補(bǔ)=X補(bǔ)(0.Y1Y2Yn)+-X補(bǔ)Ys,58,2.比較法Booth乘法,遞推公式: Z0補(bǔ)=0 Z1補(bǔ)=2-1Z0補(bǔ)+(Yn+1-Yn)X補(bǔ) Z2補(bǔ)=2-1Z1補(bǔ)+(Yn-Yn-1)X補(bǔ) Zn補(bǔ)=2-1Zn-1補(bǔ)+(Y2-Y1)X補(bǔ) XY補(bǔ)=Zn補(bǔ)+(Y1-Ys)X補(bǔ) 式中,Z0補(bǔ)為初始部分積,Z1補(bǔ)Zn補(bǔ)依次為各次求得的累加并右移之后的部分積。,59,
27、2.比較法Booth乘法 (續(xù)),Booth乘法規(guī)則: 參加運(yùn)算的數(shù)用補(bǔ)碼表示; 符號(hào)位參加運(yùn)算; 乘數(shù)最低位后面增加一位附加位Yn+1,其初值為0; 由于每求一次部分積要右移一位,所以乘數(shù)的最低兩位Yn、Yn+1的值決定了每次應(yīng)執(zhí)行的操作; 移位按補(bǔ)碼右移規(guī)則進(jìn)行; 共需做n+1次累加,n次移位,第n+1次不移位。,60,Booth乘法運(yùn)算操作,判斷位Yn Yn+1 操 作 0 0 原部分積右移一位 0 1 原部分積加X(jué)補(bǔ)后右移一位 1 0 原部分積加-X補(bǔ)后右移一位 1 1 原部分積右移一位,61,2.比較法Booth乘法 (續(xù)),由于符號(hào)位要參加運(yùn)算,部分積累加時(shí)最高有效位產(chǎn)生的進(jìn)位可能
28、會(huì)侵占符號(hào)位,故被乘數(shù)和部分積應(yīng)取雙符號(hào)位,而乘數(shù)只需要一位符號(hào)位。運(yùn)算時(shí)仍需要有3個(gè)寄存器,各自的作用與原碼時(shí)相同,只不過(guò)存放的內(nèi)容均為補(bǔ)碼表示而已。 例9:已知X=-0.1101,Y=0.1011;求XY。 X補(bǔ)=11.0011B,Y補(bǔ)=0.1011C,0A -X補(bǔ)=00.1101,62,Booth乘法示例,A C 附加位 說(shuō)明,0 0.0 0 0 0 0.1 0 1 1 0,+-X補(bǔ) 0 0.1 1 0 1 C4C5=10,+-X補(bǔ),0 0.1 1 0 1, 0 0.0 1 1 0 1 0 1 0 1 1 部分積右移一位,+0 0 0.0 0 0 0 C4C5=11,+0,0 0.0 1
29、 1 0, 0 0.0 0 1 1 0 1 0 1 0 1 部分積右移一位,+X補(bǔ) 1 1.0 0 1 1 C4C5=01,+X補(bǔ),1 1.0 1 1 0, 1 1.1 0 1 1 0 0 1 0 1 0 部分積右移一位,+-X補(bǔ) 0 0.1 1 0 1 C4C5=10,+-X補(bǔ),0 0.1 0 0 0, 0 0.0 1 0 0 0 0 0 1 0 1 部分積右移一位,+X補(bǔ) 1 1.0 0 1 1 C4C5=01,+X補(bǔ),1 1.0 1 1 1,XY補(bǔ)=1.01110001 XY=-0.10001111,63,Booth乘法流程圖,圖4-13 Booth乘法流程圖,64,3.Booth乘法運(yùn)
30、算的實(shí)現(xiàn),各器件的作用與原碼一位乘法相同,A、B寄存器長(zhǎng)n+2位,C寄存器長(zhǎng)n+1位,還需一個(gè)n+2位的加法器、n+2個(gè)與或門和一個(gè)計(jì)數(shù)器。由C寄存器的最低兩位CnCn+1來(lái)控制是加/減被乘數(shù)還是加0,當(dāng)CnCn+1=01時(shí),加被乘數(shù),即加B寄存器的內(nèi)容;CnCn+1=10時(shí),減被乘數(shù),即加上B寄存器中內(nèi)容的反,并在加法器的最低位加1;CnCn+1=00或11時(shí),不加也不減(加0)。由于符號(hào)位參與運(yùn)算,所以不需要專門處理符號(hào)位的異或門。,65,4.4.3 補(bǔ)碼兩位乘法,為了提高乘法的執(zhí)行速度,可以選用兩位乘法的方案。所謂兩位乘法,就是每次處理乘數(shù)中的兩位,從而使乘法的速度提高了一倍。 根據(jù)Bo
31、oth乘法方便地推導(dǎo)出補(bǔ)碼兩位乘法,即把補(bǔ)碼兩位乘理解為將Booth乘法的兩次合并為一次來(lái)做。,66,補(bǔ)碼兩位乘法操作,Yn-1YnYn+1 0 0 0 +0,右移2位 0 0 1 +X補(bǔ),右移2位 0 1 0 +X補(bǔ),右移2位 0 1 1 +2X補(bǔ),右移2位 1 0 0 +2-X補(bǔ),右移2位 1 0 1 +-X補(bǔ),右移2位 1 1 0 +-X補(bǔ),右移2位 1 1 1 +0,右移2位,67,4.4.3 補(bǔ)碼兩位乘法(續(xù)),被乘數(shù)和部分積取3符號(hào)位,當(dāng)乘數(shù)的數(shù)值位n為偶數(shù)時(shí),乘數(shù)取兩符號(hào)位,共需作 +1次累加, 次移位(最后一次不移位);當(dāng)n為奇數(shù)時(shí),乘數(shù)只需一個(gè)符號(hào)位,共需 次累加和移位,但最
32、后一次僅移一位。 例10:已知:X=0.0110011,Y=-0.0110010,求:XY。 X補(bǔ)=000.0110011B, Y補(bǔ)=1.1001110C,0A 2X補(bǔ)=000.1100110, -X補(bǔ)=111.1001101,2-X補(bǔ)=111.0011010,68,補(bǔ)碼兩位乘法示例,A C 附加位,+2-X補(bǔ) 1 1 1.0 0 1 1 0 1 0,0 0 0.0 0 0 0 0 0 0 1.1 0 0 1 1 1 0 0,1 1 1.0 0 1 1 0 1 0,2 1 1 1.1 1 0 0 1 1 0 1 0 1 1 0 0 1 1 1,+0 0 0 0.0 0 0 0 0 0 0,1
33、1 1.1 1 0 0 1 1 0,2 1 1 1.1 1 1 1 0 0 1 1 0 1 0 1 1 0 0 1,+ X補(bǔ) 0 0 0.0 1 1 0 0 1 1,0 0 0.0 1 0 1 1 0 0,2 0 0 0.0 0 0 1 0 1 1 0 0 1 0 1 0 1 1 0,+ -X補(bǔ) 1 1 1.1 0 0 1 1 0 1,1 1 1.1 0 1 1 0 0 0,1 1 1 1.1 1 0 1 1 0 0 0 0 0 1 0 1 0 1 1,XY補(bǔ)1.11011000001010 XY-0.00100111110110,69,4.5 定點(diǎn)除法運(yùn)算,除法是乘法的逆運(yùn)算,與乘法運(yùn)算的處
34、理思想相似,可以將n位除轉(zhuǎn)化成若干次“減法移位”,也有些計(jì)算機(jī)具有由大規(guī)模集成電路制造的陣列除法模塊。,70,4.5.1 原碼除法運(yùn)算,1.原碼比較法和恢復(fù)余數(shù)法 比較法 比較法類似于手工運(yùn)算,只是為了便于機(jī)器操作,將除數(shù)右移改為部分余數(shù)左移,每一位的上商直接寫(xiě)到寄存器的最低位。設(shè)A寄存器中存放被除數(shù)(或部分余數(shù)),B寄存器中存放除數(shù),C 寄存器用來(lái)存放商Q,若AB,則上商1,并減除數(shù);若AB,則上商0。比較法需要設(shè)置比較線路,從而增加了硬件的代價(jià)。,71,比較過(guò)程的流程圖,圖4-16(a) 比較過(guò)程流程,72,1.原碼比較法和恢復(fù)余數(shù)法(續(xù)),恢復(fù)余數(shù)法 恢復(fù)余數(shù)法是直接作減法試探方法,不管
35、被除數(shù)(或部分余數(shù))減除數(shù)是否夠減,都一律先做減法。若部分余數(shù)為正,表示夠減,該位商上“1”;若部分余數(shù)為負(fù),表示不夠減,該位商上“0”,并要恢復(fù)余數(shù)。,73,恢復(fù)余數(shù)過(guò)程的流程圖,圖4-16(b) 恢復(fù)余數(shù)過(guò)程流程,74,1.原碼比較法和恢復(fù)余數(shù)法(續(xù)),由于部分余數(shù)的正、負(fù)是根據(jù)不同的操作數(shù)組合隨機(jī)出現(xiàn)的,恢復(fù)除數(shù)法會(huì)使得除法運(yùn)算的實(shí)際操作次數(shù)不固定,從而導(dǎo)致控制電路比較復(fù)雜。而且在恢復(fù)余數(shù)時(shí),要多作一次加法,降低了除法的執(zhí)行速度。因此,原碼恢復(fù)余數(shù)法在計(jì)算機(jī)中一般很少采用。,75,2.原碼不恢復(fù)余數(shù)法(原碼加減交替法),原碼不恢復(fù)余數(shù)法是對(duì)恢復(fù)余數(shù)法的一種改進(jìn),它減少了浪費(fèi)的加法時(shí)間,且
36、運(yùn)算的次數(shù)固定,故被廣泛采用。 在恢復(fù)余數(shù)法中,若第i-1次求商的部分余數(shù)為ri-1,則第i次求商操作為:ri=2ri-1-Y, 若夠減,部分余數(shù)ri=2ri-1-Y0,商1。 若不夠減,部分余數(shù)ri=2ri-1-Y0,商0,恢復(fù)余數(shù)后,ri=ri+Y=2ri-1,然后再左移一位,進(jìn)行第i+1次操作: ri+1=2ri-Y=2(r i+Y)-Y=2ri+2Y-Y=2ri+Y,76,2.原碼不恢復(fù)余數(shù)法(續(xù)),原碼不恢復(fù)余數(shù)除法由下面的通式表示: ri+1=2ri+(1-2Qi)Y 式中Qi為第i次所得的商,若部分余數(shù)為正,則Qi=1,部分余數(shù)左移一位,下一次繼續(xù)減除數(shù);若部分余數(shù)為負(fù),則Qi=
37、0,部分余數(shù)左移一位,下一次加除數(shù)。由于加減運(yùn)算交替地進(jìn)行,故稱為原碼加減交替法。,77,2.原碼不恢復(fù)余數(shù)法(續(xù)),除法運(yùn)算需要3個(gè)寄存器。A和B寄存器分別用來(lái)存放被除數(shù)和除數(shù),C寄存器用來(lái)存放商,它的初值為0。運(yùn)算過(guò)程中A寄存器的內(nèi)容為部分余數(shù),它將不斷地變化,最后剩下的是擴(kuò)大了若干倍的余數(shù),只有將它乘上2-n才是真正的余數(shù)。 例12:已知:X=-0.10101,Y=0.11110,求:XY。 |X|=00.10101A,|Y|=00.11110B,0C |Y|變補(bǔ)=11.00010,78,原碼不恢復(fù)余數(shù)除法示例,A C 說(shuō)明,0 0.1 0 1 0 1 0.0 0 0 0 0,+|Y|變
38、補(bǔ) 1 1.0 0 0 1 0 -|Y|,1 1.1 0 1 1 1 0.0 0 0 0 0 余數(shù)為負(fù),商0, 1 1.0 1 1 1 0 左移一位,+|Y| 0 0.1 1 1 1 0 +|Y|,0 0.0 1 1 0 0 0.0 0 0 0 1 余數(shù)為正,商1, 0 0.1 1 0 0 0 左移一位,+|Y|變補(bǔ) 1 1.0 0 0 1 0 -|Y|,1 1.1 1 0 1 0 0.0 0 0 1 0 余數(shù)為負(fù),商0, 1 1.1 0 1 0 0 左移一位,+|Y| 0 0.1 1 1 1 0 +|Y|,0 0.1 0 0 1 0 0.0 0 1 0 1 余數(shù)為正,商1, 0 1.0 0
39、1 0 0 左移一位,+|Y|變補(bǔ) 1 1.0 0 0 1 0 -|Y|,0 0.0 0 1 1 0 0.0 1 0 1 1 余數(shù)為正,商1, 0 0.0 1 1 0 0 左移一位,+|Y|變補(bǔ) 1 1.0 0 0 1 0 -|Y|,1 1.0 1 1 1 0 0.1 0 1 1 0 余數(shù)為負(fù),商0,+|Y| 0 0.1 1 1 1 0 恢復(fù)余數(shù),+|Y|,0 0.0 1 1 0 0,79,原碼不恢復(fù)余數(shù)除法示例(續(xù)),經(jīng)過(guò)原碼不恢復(fù)余數(shù)除法,有: 商=0.10110 余數(shù)=0.011002-5 XY=-(0.10110+ ),0.011002-5,0.11110,80,原碼加減交替除法流程圖
40、,圖4-17 原碼加減交替除法流程圖,81,2.原碼不恢復(fù)余數(shù)法(續(xù)),在定點(diǎn)除法運(yùn)算時(shí),為了防止溢出,要求被除數(shù)的絕對(duì)值小于除數(shù)的絕對(duì)值,|X|Y|(|X|=|Y|除外),且除數(shù)不能為0。因此第一次減除數(shù)肯定是不夠減的,如果我們采用先移位后減除數(shù)的方法,得到的結(jié)果也是相同的。另外,在原碼加減交替法中,當(dāng)最終余數(shù)為負(fù)數(shù)時(shí),必須恢復(fù)一次余數(shù),使之變?yōu)檎鄶?shù),注意此時(shí)不需要再左移了。,82,3.原碼加減交替除法的實(shí)現(xiàn),圖4-18中A、B寄存器長(zhǎng)n+2位,C寄存器長(zhǎng)n+1位,還需一個(gè)n+2位的加法器、n+2個(gè)與或門、一個(gè)計(jì)數(shù)器和一個(gè)異或門。應(yīng)當(dāng)注意,A寄存器和C寄存器是級(jí)聯(lián)在一起的,它們都具有左移一
41、位的功能,在左移控制信號(hào)的作用下,C寄存器最高位的值將移入A寄存器的最低位。A寄存器中的初值是被除數(shù),但在運(yùn)算過(guò)程中將變?yōu)椴糠钟鄶?shù)。C寄存器的最低位用來(lái)保存每次運(yùn)算得到的商值,此商值同時(shí)也作為下一次操作是做加法還是做減法的控制信號(hào)。,83,4.5.2 補(bǔ)碼除法運(yùn)算,1.夠減的判斷 參加運(yùn)算的兩個(gè)數(shù)符號(hào)任意,當(dāng)被除數(shù)(或部分余數(shù))的絕對(duì)值大于或等于除數(shù)的絕對(duì)值時(shí),稱為夠減;反之稱為不夠減。當(dāng)兩數(shù)同號(hào)時(shí),實(shí)際應(yīng)作減法;兩數(shù)異號(hào)時(shí),實(shí)際應(yīng)作加法。 判斷的方法和結(jié)果如下:當(dāng)被除數(shù)(或部分余數(shù))與除數(shù)同號(hào)時(shí),如果得到的新部分余數(shù)與除數(shù)同號(hào),表示夠減,否則為不夠減;當(dāng)被除數(shù)(或部分余數(shù))與除數(shù)異號(hào)時(shí),如果
42、得到的新部分余數(shù)與除數(shù)異號(hào),表示夠減,否則為不夠減。,84,2.上商規(guī)則,補(bǔ)碼除法運(yùn)算的商也是用補(bǔ)碼表示的,上商的規(guī)則是:如果X補(bǔ)和Y補(bǔ)同號(hào),則商為正數(shù),夠減時(shí)上商“1”,不夠減時(shí)上商“0”;如果X補(bǔ)和Y補(bǔ)異號(hào),則商為負(fù)數(shù),夠減時(shí)上商“0”,不夠減時(shí)上商“1”。 補(bǔ)碼的上商規(guī)則可歸結(jié)為: 部分余數(shù)ri補(bǔ)和除數(shù)Y補(bǔ)同號(hào),商上“1”,反之,商上“0”。,85,3.商符的確定,商符是在求商的過(guò)程中自動(dòng)形成的,按補(bǔ)碼上商規(guī)則,第一次得出的商,就是實(shí)際應(yīng)得的商符。為了防止溢出,必須有|X|Y|,所以第一次肯定不夠減。當(dāng)被除數(shù)與除數(shù)同號(hào)時(shí),部分余數(shù)與除數(shù)必然異號(hào),商上“0”,恰好與商符一致;當(dāng)被除數(shù)與除數(shù)
43、異號(hào),部分余數(shù)與除數(shù)必然同號(hào),商上“1”,也恰好就是商的符號(hào)。,86,4.求新部分余數(shù),求新部分余數(shù)ri+1補(bǔ)的通式如下: ri+1補(bǔ)=2ri補(bǔ)+(1-2Qi)Y補(bǔ) Qi表示第i步的商。若商上“1”,下一步操作為部分余數(shù)左移一位,減去除數(shù);若商上“0”,下一步操作為部分余數(shù)左移一位,加上除數(shù)。 5.末位恒置1 商的最末一位恒置為“1”,運(yùn)算的最大誤差為2-n。此法操作簡(jiǎn)單,易于實(shí)現(xiàn)。,87,補(bǔ)碼加減交替除法規(guī)則,88,補(bǔ)碼加減交替除法示例,例13:已知X=0.1000,Y=-0.1010; 求XY。 X補(bǔ)=00.1000A, Y補(bǔ)=11.0110B,0C -Y補(bǔ)=00.1010,89,補(bǔ)碼加減
44、交替除法示例(續(xù)),A C 說(shuō)明,0 0.1 0 0 0 0.0 0 0 0,+Y補(bǔ) 1 1.0 1 1 0 X補(bǔ)、Y補(bǔ)異號(hào),+Y補(bǔ), 1 1.1 1 0 0 左移一位,+-Y補(bǔ) 0 0.1 0 1 0 +-Y補(bǔ),0 0.0 1 1 0 0.0 0 1 0 ri補(bǔ)、Y補(bǔ)異號(hào),商0, 0 0.1 1 0 0 左移一位,+Y補(bǔ) 1 1.0 1 1 0 +Y補(bǔ),0 0.0 0 1 0 0.0 1 0 0 ri補(bǔ)、Y補(bǔ)異號(hào),商0,+Y補(bǔ) 1 1.0 1 1 0 +Y補(bǔ),1 1.1 0 1 0 0.1 0 0 1 ri補(bǔ)、Y補(bǔ)同號(hào),商1, 1 1.0 1 0 0 左移一位,+-Y補(bǔ) 0 0.1 0 1
45、0 +-Y補(bǔ),1 1.1 1 1 0 1.0 0 1 1 末位恒置1,1 1.1 1 1 0 0.0 0 0 1 ri補(bǔ)、Y補(bǔ)同號(hào),商1, 0 0.0 1 0 0 左移一位,90,補(bǔ)碼加減交替除法示例(續(xù)),商補(bǔ)=1.0011 余數(shù)補(bǔ)=1.11102-4,商=-0.1101 余數(shù)=-0.00102-4,91,補(bǔ)碼加減交替除法流程圖,圖4-19 補(bǔ)碼加減交替除法流程圖,92,4.6 規(guī)格化浮點(diǎn)運(yùn)算,第2章中已經(jīng)討論了浮點(diǎn)數(shù)的表示方法,這里將進(jìn)一步討論規(guī)格化浮點(diǎn)數(shù)的四則運(yùn)算問(wèn)題,其中尾數(shù)的基值r=2。,93,4.6.1 浮點(diǎn)加減運(yùn)算,設(shè)兩個(gè)非0的規(guī)格化浮點(diǎn)數(shù)分別為: A=MA B=MB 規(guī)格化浮點(diǎn)
46、數(shù)A、B加減運(yùn)算通式為: AB=(MA,EA)(MB,EB) =,94,1.浮點(diǎn)數(shù)加減運(yùn)算步驟,對(duì)階 兩個(gè)浮點(diǎn)數(shù)相加或相減,首先要把小數(shù)點(diǎn)的位置對(duì)齊,而浮點(diǎn)數(shù)的小數(shù)點(diǎn)的實(shí)際位置取決于階碼的大小,因此,對(duì)齊兩數(shù)的小數(shù)點(diǎn),就是使兩數(shù)的階碼相等,這個(gè)過(guò)程稱為對(duì)階。 要對(duì)階,首先應(yīng)求出兩數(shù)階碼EA和EB之差E=EA-EB 若E=0,表示兩數(shù)階碼相等,即EA=EB;若E0,表示EAEB;若E0,表示EAEB。,95,1.浮點(diǎn)數(shù)加減運(yùn)算步驟(續(xù)),當(dāng)EAEB時(shí),要通過(guò)尾數(shù)的移位來(lái)改變EA或EB。對(duì)階的規(guī)則是:小階向大階看齊。要使小階的階碼增大,則相應(yīng)的尾數(shù)右移,直到兩數(shù)的階碼相等為止。每右移一位,階碼加1
47、。 EAEB,則MB右移。每右移一位,EB+1EB,直至EA=EB為止。 EAEB,則MA右移。每右移一位,EA+1EA,直至EA=EB為止。 尾數(shù)右移后,應(yīng)對(duì)尾數(shù)進(jìn)行舍入。,96,1.浮點(diǎn)數(shù)加減運(yùn)算步驟(續(xù)),尾數(shù)加/減 對(duì)階之后,就可以進(jìn)行尾數(shù)加/減,即:MAMBMC 其算法與定點(diǎn)加/減法相同。 尾數(shù)結(jié)果規(guī)格化 尾數(shù)加/減運(yùn)算之后得到的數(shù)可能不是規(guī)格化數(shù),為了增加有效數(shù)字的位數(shù),提高運(yùn)算精度,必須進(jìn)行結(jié)果規(guī)格化操作。,97,1.浮點(diǎn)數(shù)加減運(yùn)算步驟(續(xù)),尾數(shù)結(jié)果規(guī)格化 |M|1 設(shè)尾數(shù)用雙符號(hào)位補(bǔ)碼表示,經(jīng)過(guò)加/減運(yùn)算之后,可能出現(xiàn)以下6種情況,即: 00.1 x x x 11.0 x x
48、 x 00.0 x x x 11.1 x x x 01.x x x x 10.x x x x,98,1.浮點(diǎn)數(shù)加減運(yùn)算步驟(續(xù)),第和種情況,已是規(guī)格化數(shù)。 第和種情況需要使尾數(shù)左移以實(shí)現(xiàn)規(guī)格化,這個(gè)過(guò)程稱為左規(guī)。尾數(shù)每左移一位,階碼相應(yīng)減1(EC-1EC),直至成為規(guī)格化數(shù)為止。 左規(guī)= +Cs1 Cs2 C1 左規(guī)可以進(jìn)行多次。式中Cs1、Cs2表示尾數(shù)MC的兩個(gè)符號(hào)位,C1為MC的最高數(shù)值位。,99,1.浮點(diǎn)數(shù)加減運(yùn)算步驟(續(xù)),第和種情況在在定點(diǎn)加減運(yùn)算中稱為溢出;但浮點(diǎn)加減運(yùn)算中,只表明此時(shí)尾數(shù)的絕對(duì)值大于1,而并非真正的溢出。這種情況應(yīng)將尾數(shù)右移以實(shí)現(xiàn)規(guī)格化。這個(gè)過(guò)程稱為右規(guī)。尾數(shù)
49、每右移一位,階碼相應(yīng)加1(EC+1EC)。 右規(guī)=Cs1Cs2 右規(guī)最多只有一次。,100,1.浮點(diǎn)數(shù)加減運(yùn)算步驟(續(xù)),舍入 最簡(jiǎn)單的舍入方法是恒舍法,即無(wú)條件的丟掉正常尾數(shù)最低位之后的全部數(shù)值。 溢出判斷 當(dāng)尾數(shù)右規(guī)后,根據(jù)階碼來(lái)判斷浮點(diǎn)運(yùn)算結(jié)果是否溢出。 EC補(bǔ)=01, x x x x,表示上溢。此時(shí),浮點(diǎn)數(shù)真正溢出,機(jī)器需停止運(yùn)算,做溢出中斷處理。 EC補(bǔ)=10, x x x x,表示下溢。浮點(diǎn)數(shù)值趨于零,機(jī)器不做溢出處理,而是按機(jī)器零處理。,101,2.浮點(diǎn)數(shù)加減運(yùn)算舉例,有兩浮點(diǎn)數(shù)為 A=0.1011102-01 B=-(0.101011)2-10 假設(shè)這兩數(shù)的格式:階碼4位,用移
50、碼(偏置值為23)表示;尾數(shù)8位,用補(bǔ)碼表示,包含一位符號(hào)位,即 階碼 尾數(shù) A浮=0111;0.1011100 B浮=0110;1.0101010,102,2.浮點(diǎn)數(shù)加減運(yùn)算舉例(續(xù)), 對(duì)階 求階差:E=EA-EB=-1-(-2)=1 E=1,表示EAEB。按對(duì)階規(guī)則,將MB右移一位,EB+1EB,得: B浮=0111;1.1010101 尾數(shù)求和 00.1011100 + 11.1010101 00.0110001,103,2.浮點(diǎn)數(shù)加減運(yùn)算舉例(續(xù)),尾數(shù)結(jié)果規(guī)格化 由于結(jié)果的尾數(shù)是非規(guī)格化的數(shù),故應(yīng)左規(guī)。尾數(shù)每左移一位,階碼減1,直至尾數(shù)成為規(guī)格化數(shù)為止。最后結(jié)果為 A+B浮=011
51、0;0.110001 即 A+B =(0.110001)2-10 未發(fā)生溢出,104,4.6.2 浮點(diǎn)乘除運(yùn)算,設(shè)兩個(gè)非0的規(guī)格化浮點(diǎn)數(shù)分別為 A=MA B=MB 規(guī)格化浮點(diǎn)數(shù)A、B乘除運(yùn)算通式為: (MA,EA)(MB,EB)=(MAMB,EA+EB) (MA,EA)(MB,EB)=(MAMB,EA-EB),105,1.乘法步驟,兩浮點(diǎn)數(shù)相乘,其乘積的階碼應(yīng)為相乘兩數(shù)的階碼之和,其乘積的尾數(shù)應(yīng)為相乘兩數(shù)的尾數(shù)之積。即: AB=(MAMB) 階碼相加 兩個(gè)浮點(diǎn)數(shù)的階碼相加,如果階碼用補(bǔ)碼表示,無(wú)須校正;當(dāng)階碼用偏置值為2n的移碼表示時(shí),階碼相加后要減去一個(gè)偏移量2n。,106,1.乘法步驟(續(xù)
52、),因?yàn)镋A移=2n+EA,EB移=2n+EB, EA+EB移=2n+(EA+EB) 而EA移+EB移=2n+EA+2n+EB 所以EA+EB移=EA移+EB移-2n 顯然,此時(shí)階碼和中多余了一個(gè)偏置量2n,應(yīng)將它減去。另外,階碼相加后有可能產(chǎn)生溢出,此時(shí)應(yīng)另作處理。,107,1.乘法步驟(續(xù)),尾數(shù)相乘 若MA、MB都不為0,則可進(jìn)行尾數(shù)乘法,算法與定點(diǎn)數(shù)乘法算法相同。 尾數(shù)結(jié)果規(guī)格化 由于A、B均是規(guī)格化數(shù),所以尾數(shù)相乘后的結(jié)果一定落在下列范圍內(nèi): |MAMB|1 當(dāng) |MAMB|1時(shí),乘積已是規(guī)格化數(shù),無(wú)須再進(jìn)行規(guī)格化操作;當(dāng) |MAMB| 時(shí),則需要左規(guī)一次。左規(guī)時(shí)調(diào)整階碼后如果發(fā)生階
53、碼下溢,則做機(jī)器零處理。,108,2.除法步驟,兩浮點(diǎn)數(shù)相除,其商的階碼應(yīng)為相除兩數(shù)的階碼之差,其商的尾數(shù)應(yīng)為相除兩數(shù)的尾數(shù)之商。即: AB=(MAMB) 尾數(shù)調(diào)整 為了保證商的尾數(shù)是一個(gè)定點(diǎn)小數(shù),首先需要檢測(cè)|MA|MB|。如果不小于,則MA右移一位,EA+1EA,稱為尾數(shù)調(diào)整。因?yàn)锳、B都是規(guī)格化數(shù),所以最多調(diào)整一次。,109,2.除法步驟(續(xù)),階碼相減 兩浮點(diǎn)數(shù)的階碼相減,如果階碼用補(bǔ)碼表示,階碼相減之后無(wú)須校正;當(dāng)階碼用偏置值為2n的移碼表示時(shí),階碼相減后要加上一個(gè)偏移量2n。階碼相減后,如有溢出,應(yīng)另作處理。,110,2.除法步驟(續(xù)),尾數(shù)相除 若MA、MB都不為0,則可進(jìn)行尾數(shù)
54、除法。尾數(shù)除法的算法與前述定點(diǎn)數(shù)除法算法相同。因?yàn)殚_(kāi)始時(shí)已進(jìn)行了尾數(shù)調(diào)整,所以運(yùn)算結(jié)果一定落在規(guī)格化范圍內(nèi),即 |MAMB|1,111,4.6.3 浮點(diǎn)運(yùn)算器的實(shí)現(xiàn),浮點(diǎn)運(yùn)算的階碼只有加減運(yùn)算,尾數(shù)則有加、減、乘、除四種運(yùn)算。可見(jiàn)浮點(diǎn)運(yùn)算器主要由兩個(gè)定點(diǎn)運(yùn)算部件組成,一個(gè)是階碼運(yùn)算部件,用來(lái)完成階碼加、減,以及控制對(duì)階時(shí)小階的尾數(shù)右移次數(shù)和規(guī)格化時(shí)對(duì)階碼的調(diào)整;另一個(gè)是尾數(shù)運(yùn)算部件,用來(lái)完成尾數(shù)的四則運(yùn)算以及判斷尾數(shù)是否已規(guī)格化。此外,還需要有溢出判斷電路等。 現(xiàn)代計(jì)算機(jī)可把浮點(diǎn)運(yùn)算部件做成任選件,或稱為協(xié)處理器。所謂協(xié)處理器是因?yàn)樗荒軈f(xié)助主處理器工作,不能單獨(dú)工作。,112,4.7 十進(jìn)制
55、整數(shù)的加法運(yùn)算,一些通用計(jì)算機(jī)中設(shè)有十進(jìn)制數(shù)據(jù)表示,可以直接對(duì)十進(jìn)制整數(shù)進(jìn)行算術(shù)運(yùn)算。下面討論十進(jìn)制整數(shù)的加法運(yùn)算和十進(jìn)制加法器。,113,4.7.1 一位十進(jìn)制加法運(yùn)算,1.8421碼加法運(yùn)算 8421碼的加法規(guī)則: 兩個(gè)十進(jìn)制數(shù)的8421碼相加時(shí),按“逢二進(jìn)一”的原則進(jìn)行; 當(dāng)和9,無(wú)需校正; 當(dāng)和9,則+6校正; 在做+6校正的同時(shí),將產(chǎn)生向上一位的進(jìn)位。,114,8421碼的校正關(guān)系,115,校正舉例,0101 5,+ 10008,1101,+ 0110 6,1 0011 13,1001 9,+ 10008,1 0001,+ 0110 6,1 0111 17,116,2.余3碼加法運(yùn)算
56、,余3碼的加法規(guī)則: 兩個(gè)十進(jìn)制數(shù)的余3碼相加,按“逢二進(jìn)一”的原則進(jìn)行; 若其和沒(méi)有進(jìn)位,則減3(即+1101)校正; 若其和有進(jìn)位,則加3(即+0011)校正。,117,余3碼的校正關(guān)系,118,校正舉例,0110 3,+ 10005,1110,+ 1101 無(wú)進(jìn)位,-3,+1101,1011 8,1001 6,+ 10005,1 0001,+ 0011 有進(jìn)位,+3,1 0100 11,119,4.7.2 十進(jìn)制加法器,1.一位8421碼加法器 校正函數(shù)=C4+S4S3+S4S2 向上一位的進(jìn)位C4=校正函數(shù),120,一位8421碼加法器,圖4-21 一位8421碼加法器,1,121,2.一位余3碼加法器,C4=0,-3校正;C4=1,+3校正。 向上一位的進(jìn)位C4=C4,122,一位余3碼加法器,圖4-22 一位余3碼加法器,123,4.7.3 多位十進(jìn)制加法,對(duì)于多位十進(jìn)制數(shù)加法可采用多個(gè)BCD碼加法器,每個(gè)BCD碼加法器就是前述的一個(gè)一位十進(jìn)制加法器,可執(zhí)行兩個(gè)一位BCD數(shù)的加法。若n位BCD數(shù)相加,由從低位至高位采用行波式串行進(jìn)位的n位十進(jìn)制加法器完成。,124,4.8 邏輯運(yùn)算與實(shí)現(xiàn),計(jì)算機(jī)在解題過(guò)程中,除了要做大量的算術(shù)運(yùn)
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年己二酸二甲酯項(xiàng)目建議書(shū)
- 全程融資合同范本
- 商鋪轉(zhuǎn)租賃合同
- 超市柜臺(tái)租賃協(xié)議
- 佳木斯市個(gè)人車位租賃合同
- 2025年海洋潛標(biāo)系統(tǒng)項(xiàng)目合作計(jì)劃書(shū)
- 2025年碳纖維正交三向織物項(xiàng)目合作計(jì)劃書(shū)
- 2025年X射線管項(xiàng)目發(fā)展計(jì)劃
- 2025個(gè)人承包土地合同書(shū)
- 2024年零星建筑工程施工合作合同范本版B版
- 湖南省湘西州吉首市2023屆九年級(jí)上學(xué)期期末素質(zhì)監(jiān)測(cè)數(shù)學(xué)試卷(含解析)
- 2023-2024學(xué)年湖北省武漢市東西湖區(qū)三年級(jí)(上)期末數(shù)學(xué)試卷
- GB/T 31771-2024家政服務(wù)母嬰護(hù)理服務(wù)質(zhì)量規(guī)范
- 期末試卷:福建省廈門市集美區(qū)2021-2022學(xué)年八年級(jí)上學(xué)期期末歷史試題(原卷版)
- 美容院2024年度規(guī)劃
- 裝飾裝修巡查記錄表
- 公司安全生產(chǎn)事故隱患內(nèi)部報(bào)告獎(jiǎng)勵(lì)工作制度
- 艾滋病預(yù)防知識(shí)講座
- 《4 平平安安回家來(lái)》 說(shuō)課稿-2024-2025學(xué)年道德與法治一年級(jí)上冊(cè)統(tǒng)編版
- 2024中考英語(yǔ)真題分類匯編-代詞
- 第九版內(nèi)科學(xué)配套課件-8-骨髓增生異常綜合征(MDS)
評(píng)論
0/150
提交評(píng)論