版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
計算機組成基礎(chǔ)
第二版
FundamentalsofComputerOrganization
孫德文章鳴嬛
2016年9月
面向CS2013專業(yè)規(guī)范教材2023/3/26上海交通大學(xué)2
第3章
數(shù)值的機器運算
3教學(xué)建議
數(shù)值的機器運算是運算器的主要功能本章共分5節(jié)定點數(shù)加、減法運算和加減法電路的實現(xiàn)定點數(shù)的乘、除法運算和乘、除法電路的實現(xiàn)
邏輯運算定點運算器的基本結(jié)構(gòu)與工作原理浮點數(shù)運算和浮點數(shù)運算器的實現(xiàn)。本章的重點是定點數(shù)加、減法和乘、除法運算與實現(xiàn)以及浮點數(shù)運算和浮點數(shù)運算器的實現(xiàn),而難點是乘、除法運算與實現(xiàn)。4教學(xué)建議在硬件電路方面要掌握:1)從半加器到算術(shù)邏輯部件ALU;2)行波進位的補碼加法/減法器3)BCD碼(十進制)加法器;4)先行進位的并行加法器;5)定點運算器的基本結(jié)構(gòu);6)浮點運算器的基本結(jié)構(gòu)。5第3章數(shù)值的機器運算3.1定點數(shù)的加、減法運算和加、減法電路的實現(xiàn)3.2定點數(shù)的乘、除法運算和乘、除法電路的實現(xiàn)3.3
邏輯運算3.4定點運算器的基本結(jié)構(gòu)與工作原理3.5浮點數(shù)運算和浮點數(shù)運算器的實現(xiàn)3.1定點數(shù)的加、減法運算
和加、減法電路的實現(xiàn)3.1.1定點數(shù)的加減運算3.1.2從半加器到算術(shù)邏輯部件ALU73.1.1定點數(shù)的加減運算二進制的運算規(guī)則為:0+0=0加法規(guī)則:0+1=1+0=11+1=10(1為向高位的進位)0-0=0減法規(guī)則0-1=1(向高位借位1)1-0=1 1-1=00×0=0乘法規(guī)則:0×1=1×0=01×1=18補碼表示法由于補碼表示法使同一個電路既可以用于無符號數(shù)相加,又可用于有符號數(shù)相加;同時利用補碼運算能使減法轉(zhuǎn)為加法,因此目前絕大多數(shù)計算機都采用補碼表示法來進行加減運算。91.補碼的加減運算規(guī)則設(shè):[X]補=Xs.X1X2···Xn-1Xn[Y]補=Ys.Y1Y2···Yn-1Yn為兩個n+1位補碼表示的二進制小數(shù),Xs、Ys。為兩數(shù)的符號位,在補碼加減運算中同數(shù)據(jù)位一起參與運算
10補碼數(shù)的加減運算規(guī)則為
[X+Y]補=[X]補+[Y]補[X-Y]補=[X]補+[-Y]補減法運算可以通過加法運算來實現(xiàn),只是在運算之前,必須對[Y]補進行一次求補運算求得[-Y]補,即將減數(shù)的補碼表示[Y]補變成其負數(shù)的補碼表示[-Y]補,其轉(zhuǎn)換過程為:將[Y]補的各位(包括符號位的代碼)按位取反加“1”。
112.加減運算中溢出的判別兩個定點數(shù)經(jīng)過加減運算后,其結(jié)果(和數(shù)或差數(shù))超過了定點數(shù)的表示范圍,就會發(fā)生溢出,從而導(dǎo)至運算結(jié)果出錯,因此在加減運算后必須判別是否發(fā)生溢出。判別溢出的常用方法有三種12⑴符號比較法兩個同符號數(shù)相加,若和數(shù)符號與原數(shù)符號不同,則表示發(fā)生溢出;而兩個異符號數(shù)相減,若差數(shù)符號與減數(shù)符號相同,則亦表示發(fā)生溢出。而兩異符號數(shù)相加或兩同符號數(shù)相減是不會發(fā)生溢出的??傻靡绯鰳酥綱=(X+Y)s+XsYsYs(X-Y)s+Xs13例3-1例3-1:X=-1310,Y=-1110
求X+Y(取5位二進制,含1位符號位)[X]補=10011,[Y]補=10101[X+Y]補=[X]補+[Y]補=10011+10101=101000=01000(符號位前的“1‘自動丟棄)。X+Y=+8本例中,“和數(shù)”的符號位(“0”)與原數(shù)的符號位(“1”)相異,發(fā)生溢出。14例3-2例3-2:
X=+1010,Y=-710
求X-Y(取5位二進制,含1位符號位)[X]補=01010,[Y]補=11001,[-Y]補=00111[X-Y]補=[X]補+[-Y]補=01010+00111=10001X-Y=-15本例中,“差數(shù)”的符號位(“1”)與“減數(shù)”的符號位(“1”)相同,發(fā)生溢出。例3-3例3-3X=-1310,Y=+510
求X+Y[X]原=11101,[Y]原=00101,[X]補=10011,[Y]補=00101,[X+Y]補=[X]補+[Y]補=10011+00101=11000[X+Y]原=11000X+Y=-8本例中,兩異符號數(shù)相加不會發(fā)生溢出。15例3-4例3-4X=+1010
,Y=+910
求X-Y[X]補=01010,[Y]補=01001,[-Y]補=10111[X-Y]補=[X]補+[-Y]補=01010+10111=00001X-Y=+1本例中,兩同符號數(shù)相減是不會發(fā)生溢出的。采用這種判別法必須保留加法運算中“加數(shù)”和減法運算中“減數(shù)”的符號,這是可以實現(xiàn)的,因為在加法運算中“加數(shù)”及“減數(shù)”一般是保持不變。1617⑵雙進位法加減運算后“和數(shù)”及“差數(shù)”中的符號位的進位輸入Cin(即數(shù)值位的最高位向符號位的進位)與進位輸出Cout(即符號位在運算中向高一位的進位)相異,則有溢出,表示為:溢出標志V=Cin⊕Cout
雙進位法以上述4例說明之:例3-1運算過程中Cin=0,Cout=1,V=Cin⊕Cout=1,溢出例3-2運算過程中Cin=1,Cout=0,V=Cin⊕Cout=1,溢出。例3-3運算過程中Cin=0,Cout=0,
V=Cin⊕Cout=0,無溢出例3-4運算過程中Cin=1,Cout=1,V=Cin⊕Cout=0,無溢出。1819⑶雙符號位法對參加運算的數(shù)在運算過程中采用兩個符號位,若運算結(jié)果“和數(shù)”或“差數(shù)”的兩個符號位不相同,表示結(jié)果有溢出,而運算最后結(jié)果仍取一個符號位。結(jié)果的雙符號位為00或11表示結(jié)果無溢出。例3-5例3-5X=-1310,Y=-1110
求X+Y(取6位二進制,含2位符號位)[X]補=10011,[Y]補=10101[X+Y]補=[X]補+[Y]補=110011+110101=101000=01000X+Y=+8兩個符號位為10,相異,有溢出。20例3-6例3-6X=+1010,Y=-710
求X-Y(取6位二進制,含2位符號位)[X]補=01010,[Y]補=11001,[-Y]補
=00111[X-Y]補=[X]補+[-Y]補=001010+000111=010001=10001X-Y=-15兩個符號位為01,相異,有溢出。21例3-7例3-7X=-1310,Y=+510
求X+Y(取6位二進制,含2位符號位)[X]原=111101,[Y]原=000101,[X]補=110011,[Y]補=000101,[X+Y]補=[X]補+[Y]補=110011+000101=111000[X+Y]原=11000X+Y=-8兩個符號位為11,相同,無溢出22例3-8例3-8X=+1010
,Y=+910
求X-Y[X]補=001010,[Y]補=001001,[-Y]補=110111[X-Y]補=[X]補+[-Y]補=001010+110111=1000001=000001X-Y=+1兩個符號位為=00,相同,無溢出。2324雙符號位法結(jié)果的雙符號位為10,表示兩個負數(shù)之和小于計算機所能表示的最小負數(shù),稱為“下溢”(“10”也表示負數(shù)被正數(shù)相減后所得結(jié)果小于計算機所能表示的最小負數(shù));
結(jié)果的雙符號位為01,表示正數(shù)被負數(shù)相減后所得結(jié)果大于計算機所能表示的最大正數(shù),稱為“上溢”(“01”也表示兩個正數(shù)之和大于計算機所能表示的最大的正數(shù))。
253.1.2從半加器到算術(shù)邏輯部件ALU算術(shù)邏輯部件ALU(ArithmeticLogicUnit)是運算器的核心,用來實現(xiàn)數(shù)據(jù)加工和處理所必需的各種整型數(shù)據(jù)和邏輯型數(shù)據(jù)的算術(shù)運算和邏輯運算功能。算術(shù)運算包括加、減、乘、除運算,但不論是那種運算都離不開加法運算,因此加法器是ALU中最基本的部件。261.半加器二進制加法法則是:
0+0=00+1=11+0=11+1=0(進位為1)對2個1位的2進制數(shù)Xi與Yi的加法運算,其輸出與輸入關(guān)系可用下列真值表表示,見表3-1。27表3-1
28半加器據(jù)此真值表可知,和數(shù)Si同被加數(shù)Xi、加數(shù)Yi的關(guān)系可用一個異或門表示,而向高位的進位值Ci同Xi、Yi的關(guān)系可用一個與門表示,因此可畫出相應(yīng)的邏輯電路如圖3-1所示。這種只考慮被加數(shù)和加數(shù),不考慮低位向本位的進位值的加法器稱為半加器。在多位2進制數(shù)進行加法運算時,最低位的加法就可采用半加器電路。
29圖3-1
302.全加器如果考慮低位向本位的進位Ci-1,則2個1位二進制數(shù)Xi與Yi的加法運算,其輸出與輸入的關(guān)系可用表3-2所示的真值表表示。這種考慮低位向本位的進位值的加法器稱為全加器,在多位2進制數(shù)進行加法運算時,除最低位外,其余各位都必須采用全加器電路。
31全加器真值表32全加器從表3-2可見
33全加器的邏輯電路由此可畫出全加器的邏輯電路如圖3-2所示34全加器的邏輯電路
353.并行加法器1)串行進位的并行加法器圖3-3為n位并行加法器,由n個全加器串接構(gòu)成,進行兩個n位數(shù)的相加,n位數(shù)據(jù)的各位同時運算,每一級的進位輸入直接依賴前一級的進位輸出,進位信號逐級形成的。這種加法器稱為“串行進位的并行加法器”?;蚍Q“行波進位加法器”。36串行進位的并行加法器37串行進位的并行加法器
38總延遲時間上述串行進位的n位并行加法器的總延遲時間較長且與字長成正比,設(shè)一級“與門”、“或門”的延遲時間為t,每一級全加器的進位延遲時間為2t(即從Ci-1→Ci經(jīng)過2個基本門電路),在n位并行加法器中從C0→Cn的總延遲時間為2nt。為提高加法器的速度,要求減少進位延遲時間,為此引入快速進位的問題。392)先行進位的并行加法器為了減少進位延遲時間引入了“先行進位”的概念,其特點是n級加法器各級進位信號同時形成,故又稱為“并行進位”或“同時進位”。40“進位生成函數(shù)”Gi進位表達式Ci=XiYi+(Xi⊕Yi)Ci-1,向高位的進位由兩部分組成,Xi、Yi取決于本位參于運算的兩個數(shù),而與Ci-1(低位進位)無關(guān)。將Xi、Yi用“進位生成函數(shù)”Gi表示,這是本位運算產(chǎn)生的進位,即Xi與Yi同時為1必然產(chǎn)生向高一位的進位;41“進位傳送函數(shù)”Pi而(Xi⊕Yi)Ci-1表示這一部分進位值不僅與本位參于運算的兩個數(shù)有關(guān),還同低位送來的進位值Ci-1有關(guān),當Ci-1為“1”時,必需(Xi⊕Yi)=1,才能產(chǎn)生向高位的進位??蓪i表達式中(Xi⊕Yi)用“進位傳送函數(shù)”Pi表示,則42先行進位的并行加法器由此,n級并行加法器中各級的進位信號表達式為43先行進位的并行加法器以Gi及Pi表達式代入得:44先行進位的并行加法器從上述的進位信號表示式可見:第i位的進位Ci僅由G1G2…Gi,P1P2…Pi以及最低進位輸入C0決定,而與C1~Ci-1無關(guān),因此各級進位輸出可以同時產(chǎn)生。若不計Pi、Gi的形成時間,從C0→Ci的延遲時間為2t。注意此時的n位并行加法器中Cn的邏輯表達式為:Cn=Gn+PnGn-1+PnPn-1Gn-2+PnPn-1Pn-2Gn-3+…+PnPn-1…P2P1+PnPn-1…P2P1C0
n位并行加法器中Cn的形成電路采用上述邏輯表達式組成。圖3-4為4位先行進位并行加法器的并行進位鏈電路圖,稱為4位先行進位電路CLA(CarryLookAhead)。45圖3-44位先行進位并行加法器的并行進位鏈46圖3-44位先行進位并行加法器的并行進位鏈
47圖3-54位CLA加法器電路將4位先行進位電路CLA同4位求和電路(包含進位生成/進位傳送電路)結(jié)合可得到4位CLA加法器如圖3-5所示4816位單級先行進位加法器用4個4位CLA加法器電路可構(gòu)成16位單級先行進位加法器,如3-6所示。494.加減法部件ASU行波進位的補碼加法/減法器(加減法部件ASU)利用補碼加減法公式
[X+Y]補
=[X]補+[Y]補
[X–Y]補=[X-Y]補=[X]補+[-Y]補50加減法部件ASU用補碼加法可實現(xiàn)兩數(shù)相減的操作,即用一套加法器電路可以完成[X+Y]補和[X-Y]補,在進行加法運算時Y用原值,在實現(xiàn)減法運算時,對-Y求一次補,即得到[-Y]補,然后同[X]補作加法操作。具體操作中求補操作通過在輸入端加—個反相操作,加1操作可在最低位上置進位輸入為1來實現(xiàn)。具體線路如圖3-7所示51圖3-7n位加法/減法器ASU
52n位加法/減法器ASU圖中加數(shù)Yi經(jīng)過一個異或門送全加器FA,由方式控制信號M控制加減操作。當M=0時Yn-1'…Y0'=Yn-1…Y0,n個全加器將X、Y兩個n位二進制數(shù)X、Y進行加法運算;當M=1時Yn-1'…Y0'取反加1變?yōu)?Y的補碼,同[X]補進行加法運算。535.BCD碼(十進制)加法器計算機除能進行二進制數(shù)據(jù)的運算外還能進行十進制數(shù)據(jù)的運算,十進制數(shù)據(jù)在計算機中一般采用BCD碼(Binarycodeddecimal)的形式,即二進制編碼的十進制數(shù),用4位二進制數(shù)0000~1001表示1位十進制數(shù)0~9。BCD碼加法器的邏輯框圖如圖3-8所示。54
圖3-8BCD碼(十進制)加法器
55BCD碼(十進制)加法器BCD碼加法器由2部分電路組成,一為FA3、FA2、FA1和FA0組成的4位2進制加法器。二為FA3'、FA2'和FA1'以及一個或門,2個與門組成的修正電路。56BCD碼(十進制)加法器BCD碼加法同二進制加法的區(qū)別在于:用4位二進制加法器進行BCD碼加法運算時,當兩數(shù)之和小于等于9時結(jié)果是正確的,而當兩數(shù)之和大于9時,必須進行修正,具體的修正方法是當X+Y+Cin≤9,S=S‘,當X+Y+Cin>9時S=S'+6。57BCD碼(十進制)加法器由圖3-8可見,當C3'=1或S3'S2'=11或S3'S1'=11時,修正電路中FA2'和FA1'輸入1,即:S3S2S1S0=S3'S2'S1'S0'+0110得到加6修正。586.算術(shù)邏輯部件ALU算術(shù)邏輯部件ALU除了完成加、減法等算術(shù)運算外,還必須具有邏輯運算功能,可采用如圖3-9所示的電路實現(xiàn)多功能算術(shù)/邏輯部件。圖3-9算術(shù)邏輯部件ALU5960算術(shù)邏輯部件ALU圖中選擇器A是一種二選一電路,由控制信號M控制,選擇器B是一種八選一電路,由三位控制信號S2S1S0控制。其中點劃線框內(nèi)即一位加法/減法電路ASU與圖3-7(b)的框圖相似,其中非門和選擇器A與異或門的作用相同。ASU可實現(xiàn)補碼的加法和減法操作,已如前述,增加的7個門電路分別實現(xiàn)等7種常用的邏輯操作,由3位控制信號S2S1S0來控制輸出信號Z來自哪種運算的結(jié)果??傻肁LU算術(shù)邏輯運算功能如表3-3所示。61表3-3算術(shù)邏輯部件ALU
62
表3-10n位行波進位的ALU電路
637.
4位二進制算術(shù)邏輯部件74181647.
4位二進制算術(shù)邏輯部件74181654位二進制算術(shù)邏輯部件74181M端為控制端,用來控制ALU的運算方式—算術(shù)運算還是邏輯運算。M=0時,經(jīng)反相后為1,對進位信號無影響。輸出結(jié)果Fi不僅與本位操作數(shù)Xi、Yi有關(guān),而且與向本位的進位值Ci-1有關(guān),因此:當M=0時,ALU進行算術(shù)運算。M=1時,經(jīng)反相后為0,封鎖了各位的進位輸出,即Ci=0,各位運算結(jié)果Fi僅與本位操作數(shù)Xi、Yi有關(guān),因此當M=1時,ALU進行邏輯運算。輸出端“A=B”可指示兩個操作數(shù)是否相等。P、G為兩個本組先行進位輸出端,P為進位傳送函數(shù),G為進位生成函數(shù),其含義見3.1.13。
66表3-4 74181ALU運算功能表
67表3-4 74181ALU運算功能表從表3-4可見,工作方式選擇信號為S3S2S1S0,有16種狀態(tài)組合,M為算術(shù)操作和邏輯選擇信號,當M=L為算術(shù)操作,M=H為邏輯操作。B3~B0與A3~A0為兩個4位的操作數(shù),F(xiàn)3~F0為4位的目的操作數(shù),Cn為低位向本位進位輸入,Cn+4為本位向高位的進位輸出。表中算術(shù)運算是用補碼表示法表示,“加”是指“算術(shù)加”,運算時要考慮進位,“+”是指“邏輯加”,減法是用補碼方法進行,數(shù)的反碼是器件內(nèi)部產(chǎn)生的,輸出結(jié)果“A減B減1”,在進行減法運算時需在最末位產(chǎn)生一個進位(加1),以產(chǎn)生“A減B”的結(jié)果。注意:上述表中所描述的正邏輯操作方式的一組算術(shù)運算和邏輯運算與負邏輯操作數(shù)方式的一組算術(shù)運算和邏輯運算是等效的。該器件把邏輯輸入信號都反相所產(chǎn)生的功能,亦在此集合中。683.2定點數(shù)的乘、除法運算和
乘、除法電路的實現(xiàn)數(shù)制3.2.1定點數(shù)的乘法運算和乘法電路的實現(xiàn)3.2.2定點數(shù)的除法運算和除法電路的實現(xiàn)693.2.1定點數(shù)的乘法運算和乘法電路的實現(xiàn)1.原碼乘法原碼表示對乘法運算比較方便,原碼表示的兩數(shù)相乘,乘積的符號位為相乘兩數(shù)符號位的按位加之和,數(shù)值部分為兩數(shù)絕對值之積。原碼乘法實際上是兩個正數(shù)相乘的方法。這里“按位加”就是不考慮進位的加法,即“異或”運算,記作+,所以原碼乘法的表達式為;70原碼乘法設(shè)被乘數(shù)為X、乘數(shù)為Y。用原碼表示為:被乘數(shù)[X]原
=Xs.X1X2···Xn-1Xn乘數(shù)[Y]原=Ys.Y1Y2···Yn-1Yn71原碼乘法原碼一位乘法用兩個操作數(shù)(被乘數(shù)和乘數(shù))的絕對值相乘,乘積的符號位是兩個操作數(shù)符號位的異或值。在計算機中實現(xiàn)乘法運算的方法是移位和相加,所謂“一位乘法”運算是根據(jù)乘數(shù)Y的每一位Yi(i=1,2,…,n-1,n,從低位Yn到高位Y1)的取值是“0”還是“1”來決定對上次部分積作什么運算,若Yi為“1”,則在部分積上加被乘數(shù);若為“0”,則加上“0”。每次獲得新的部分積后,右移一位,直到乘數(shù)Y的最高位Y1。兩個n位數(shù)相乘,只需要(n+1)位全加器,運算結(jié)果最多為2n位。72原碼乘法同手算乘法相仿,計算機實現(xiàn)乘法操作也是將乘數(shù)的每一位自低位至髙位分別與被乘數(shù)相乘求得部分積,然后將全部部分積相加,求得最終結(jié)果——乘積值。但必須注意的是每次部分積相加時,新產(chǎn)生的部分積必須左移一位再與原部分積之和相加。因此,n位乘法操作可轉(zhuǎn)化為n次“累加與移位”。計算機在進行乘法操作時是用原部分積之和的“右移”來替代欲相加的新部分積的“左移”,可節(jié)省參予操作的元器件。原碼一位乘法運算規(guī)則及過程如下:73原碼乘法(1)取被乘數(shù)X和乘數(shù)Y的絕對值|X|=0.X1X2···Xn-1Xn|Y|=0.Y1Y2···Yn-1YnN位部分積的初值為全“0”;(2)以乘數(shù)Y的最低位Yn作為判斷位。若Yn=1,原部分積之和+被乘數(shù)得新部分積之和;
Yn=0,原部分積之和+0(即不加)得新部分積之和;(3)新部分積之和同乘數(shù)|Y|一起右移一位;(4)依次檢查Yn-1、Yn-2···Y1,重復(fù)上二步操作,最終得乘積Z=X×Y的絕對值;(5)符號位Zs=Xs+Ys
得ZsZ1Z2···Z2n-1Z2n
即X×Y74例3-9原碼乘法例3-9設(shè)[X]原=0.1011,[Y]原=0.1101,求[X]原×[Y]原
=[Z]原按乘法規(guī)則,符號位Zs=Xs⊕Ys=0⊕0=0;絕對值相乘如下75例3-9得:[Z]原=0.10001111
7677例3-10原碼乘法例3-10設(shè)[X]原=1.1010,[Y]原=1.1111,求[X]原×[Y]原
=[Z]原按乘法規(guī)則,符號位Zs=Xs⊕Ys=1+1=0;絕對值相乘如下78例3-10得:[Z]原=0.100101107980例3-11原碼乘法例3-11設(shè)[X]原=0.0101,[Y]原=1.1010,求[X]原×[Y]原
=[Z]原按乘法規(guī)則,符號位Zs=Xs⊕Ys=0⊕1=1;絕對值相乘如下81例3-11得:[Z]原=1.0011001082832.原碼一位乘法運算器框圖原碼一位乘法運算實現(xiàn)的原理框圖如圖3-13所示。8485乘法運算器框圖這是一個5位二進制數(shù)X=(+/-)0.X1X2X3X4
與Y=(+/-)0.Y1Y2Y3Y4采用原碼一位乘法運算的原理框圖,圖中,被乘數(shù)[X]原=Xs.X1X2X3X4
乘數(shù)[Y]原=Ys.Y1Y2Y3Y4C寄存器為4位寄存器存放部分積,初值為0;B寄存器為4位寄存器存放乘數(shù)Y的絕對值|Y|; A寄存器為4位寄存器存放被乘數(shù)X的絕對值|X|;C_B組成8位寄存器,用來存放每次求得的部分積之和,并可實現(xiàn)右移,最后結(jié)果——8位乘積值即存于此。86乘法運算器框圖D為2選1的選擇器CSR為右移控制信號(脈沖信號),每發(fā)一脈沖信號,控制有關(guān)寄存器C_B右移一次,移出位(bs)信號值
——1或0控制選擇器D的輸出:bs=1時,選擇器D輸出被乘數(shù)X的絕對值|X|到ALU,與部分積相加后輸出,形成新的部分積送寄存器C同寄存器B一起右移決定下一次操作;bs=0時,選擇器D輸出0到ALU,與部分積相加后輸出(即僅輸出上次的部分積),形成新的部分積送寄存器C同寄存器B一起右移決定下一次操作;87乘法運算器框圖計數(shù)器CR為減法計數(shù),初始值為操作數(shù)中數(shù)值位的位數(shù),用來控制操作中部分積的右移次數(shù),當CR為0時結(jié)束操作。P為(2n+1)位寄存器,用來存放最終結(jié)果,2n位存放乘積的數(shù)值,最高位Ps為符號位,由異或門輸出Xs+Ys生成。
883.補碼乘法由于目前絕大多數(shù)計算機都采用補碼表示法來進行加減運算。因此在采用補碼加誠運算的計算機中也常采用補碼乘法。在補碼乘法中被乘數(shù)為X和乘數(shù)為Y釆用補碼表示——[X]補和[Y]補,運算結(jié)果Z也用補碼表示——[Z]補,運算時符號位Xs和Ys參與運算。89補碼乘法被乘數(shù)X=(+/-)Xs.X1X2···Xn-1Xn乘數(shù)Y=(+/-)Ys.Y1Y2···Yn-1Yn按原碼規(guī)則運算:1,當乘數(shù)Y>0(即Y為正數(shù),Ys=0),將按原碼乘法運算,但按補碼規(guī)則移位;2,當乘數(shù)Y<0(即Y為負數(shù),Ys=1),先去掉[Y]補中的Ys,再按原碼乘法運算,3,最后的部分積與[-X]補相加,得最后結(jié)果[Z]補。90補碼乘法補碼一位乘法的表達式為:[Z]補=[X×Y]補
=[X]補×[0.Y1Y2···Yn]+[-X]補×Ys當Ys=0,[Z]補=[X]補×[0.Y1Y2···Yn]Ys=1,[Z]補=[X]補×[0.Y1Y2···Yn]+[-X]補即在乘數(shù)X為負數(shù)時,用+[-X]補進行校正。上述補碼乘法中,當乘數(shù)為負數(shù)時,必須在最終部分積和上再加[-X]補進行校正,控制較復(fù)雜,據(jù)此引出Booth乘法。91補碼乘法由前式[Z]補=[X×Y]補
=[X]補×[0.Y1Y2···Yn]+[-X]補×Ys=[X]補×[2-1Y1
+2-2Y2+···+2-nYn]+[-X]補×Ys=[X]補×[2-1Y1
+2-2Y2+···+2-nYn]+{-[X]補}×Ys=[X]補×[-Ys+2-1Y1
+2-2Y2+2-3Y3···+2-nYn]=[X]補×[-Ys+(Y1-2-1Y1)+(2-1Y2
-2-2Y2)+(2-2Y3
-2-3Y3)+···+(2-(n-1)Yn-2-nYn)]=[X]補×[-Ys+(Y1-2-1Y1)+(2-1Y2
-2-2Y2)+(2-2Y3
-2-3Y3)+···+(2-(n-1)Yn-2-nYn)+0]=[X]補×[(Y1-Ys)+(Y2-Y1)2-1
+(Y3
-Y2)2-2+···+(Yn-Yn-1)2-(n-1)+(0-Yn)2-n]=[X]補×[(Y1-Ys)+(Y2-Y1)2-1
+(Y3
-Y2)2-2+···+(Yn-Yn-1)2-(n-1)+(Yn+1-Yn)2-n]92補碼乘法式中Yn+1為加在乘數(shù)最低位Yn右邊的“附加位”,初值為0,不影響運算結(jié)果。據(jù)此可得如下遞推公式[Z0]補=0[Z1]補=2-1{[Z0]補+(Yn+1-Yn)[X]補}[Z2]補=2-1{[Z1]補+(Yn-Yn-1)[X]補}[Z3]補=2-1{[Z2]補+(Yn-1-Yn-2)[X]補}···[Zn]補=2-1{[Zn-1]補+(Y2-Y1)[X]補}93補碼乘法
[Z0]補=0,為初始積部分[Z1]補~[Zn]補為每次求得的累加值右移后的部分積。[Zn]補第一次求得的累加值右移后之值,由(Yn+1-Yn)之值決定是否在累加后的原部分積上加[X]補(被乘數(shù)的補碼)。94補碼一位乘法補碼一位乘法——Booth算法的運算規(guī)則為:1,參加運算被乘數(shù)和乘數(shù)都釆用補碼表示,符號位參加運算;2,乘數(shù)最低位Yn后加一位附加位Yn+1,初值為0;3,求得每次部分積和后必須與乘數(shù)一起右移一位,由乘數(shù)的最低二位Yn+1Yn的值決定下一次執(zhí)行的操作——累加與右移(按補碼右移規(guī)則移位),具體規(guī)則如下:YnYn+1=00原部分積+0,并右移一位YnYn+1=01原部分積+[X]補,并右移一位YnYn+1=10原部分積+[-X]補,并右移一位YnYn+1=11原部分積+0,并右移一位4,操作次數(shù),累加n+1次,移位n次(最后一次不移位)5,被乘數(shù)和部分積采用雙符號位,乘數(shù)采用單符號位。95例3-12X=-0.11010,Y=-0.01110用Booth法求X×Y解[X]補=11.00110,[Y]補=11.10010,[-X]補=00.110109600.000001.100100
加‘0’+000.00000_______________________=00.0000000.000000110010
加[-X]補+[-X]補00.11010______________________=00.1101000.011010011001
加[X]補+[X]補11.00110_______________________=11.1001111.110011001100
加‘0’
+000.00000________________________=11.1100111.111001100110
加[-X]補+[-X]補00.11010________________________=00.1011000.010110110011
加‘0’
+000.00000________________________=00.01011
[X]補×[Y]補=00.0101101100
X×Y=+0.0101101100
9798例3-13例3-13:X=21/32=+0.10101,Y=-26/32=—0.11010用Booth法求X×Y解[X]補=00.10101,[Y]補=11.00110,[-X]補=11.01011991004.補碼一位乘法運算器框圖補碼一位乘法運算實現(xiàn)的原理框圖如圖3-14所示101102補碼一位乘法運算器框圖這是一個n位二進制數(shù)X=(+/-)0.Xs.X1X2···Xn-1Xn
與Y=(+/-)0.[Y]補=Ys.Y1Y2···Yn-1Yn采用補碼一位乘法(Booth乘法)運算的原理框圖,圖中,被乘數(shù)[X]補=Xs.X1X2···Xn-1Xn乘數(shù)[Y]補=Ys.Y1Y2···Yn-1Yn被乘數(shù)和部分積采用雙符號位,乘數(shù)采用單符號位。C寄存噐為n+2位寄存器存放部分積,初值為0;A寄存噐為n+2位寄存器存放被乘數(shù)X的補碼[X]補、NEG為求補器,輸入被乘數(shù)X的補碼[X]補,輸出[-X]補103補碼一位乘法運算器框圖B寄存器為n+2位寄存器存放乘數(shù)Y的補碼[Y]補,最低位Y0為乘數(shù)的附加位初值置“0”,由Y1Y0的取值決定累加時的數(shù)值:YnYn+1作為選擇器D
的控制信號,選揮器的輸出送加法器。YnYn+1=00或11,原部分積+0;YnYn+1=01,原部分積+[X]補;YnYn+1=10,原部分積+[-X]補
104補碼一位乘法運算器框圖C_B組成2n+4位寄存器,用來存放每次求得的部分積之和,并可實現(xiàn)右移,最后結(jié)果——2n+2位乘積值即存于此?!剖且粋€(n+2)位加法器CSR為右移控制信號(脈沖信號),每發(fā)一脈沖信號,控制有關(guān)寄存器C_B右移一次,最后2位控制選擇器D的輸出:計數(shù)器CR為減法計數(shù),初始值為操作數(shù)中數(shù)值位的位數(shù)n,用來控制操作中部分積的右移次數(shù),當CR為0時結(jié)束操作。P為(2n+2)位寄存器,用來存放最終結(jié)果,2n位存放乘積的數(shù)值,最高兩位為符號位(雙符號位)。1053.2.2定點數(shù)的除法運算和除法電路的實現(xiàn)參加運算的兩個數(shù)以原碼表示,取兩數(shù)的絕對值相除,商的符號由兩數(shù)的符號位按位相加求得。在計算機中實現(xiàn)除法運算的方法是移位相減,而減法又可用補碼相加來完成。因此其基本操作也是移位和加法。原碼除法常用“恢復(fù)余數(shù)法”和“加減交替法”。1061.原碼除法——恢復(fù)余數(shù)法
在除法過程中采用被除數(shù)(或余數(shù))減去除數(shù)的方法,相減前先觀察是否夠減,夠減時,上“商”為1,然后作減法;如果不夠減,上“商”為0,并不作減法。被除數(shù)(或余數(shù))左移一位(即乘2),進行下一位的求商運算。這是手算過程。而在計算機中是先作減法,由余數(shù)的符號來判別是否夠減,如果余數(shù)為正,說明夠減,應(yīng)上商為1,如果余數(shù)為負,應(yīng)上商為0,由于已作了相減運算,需將除數(shù)加回以恢復(fù)余數(shù)。因為每次求一位商,余數(shù)左移一位,所以最后所得的余數(shù)應(yīng)右移n位(對n位數(shù)相除而言)即×2-n107例3-14例3-14設(shè)[X]原
=0.1101,[Y]原=0.1111,用原碼恢復(fù)余數(shù)法求:[X]原/[Y]原按除法規(guī)則,符號位Zs=Xs⊕Ys=0絕對值相除如下:([-Y]補=11.0001雙符號位)108109例3-14結(jié)果商為Z=0.1101,余數(shù)R=0.1101×2-4原碼除法——恢復(fù)余數(shù)法這種方法的缺點是,上商為0時,因為要恢復(fù)余數(shù),其運算步數(shù)要比上商為1的多1步,由于商值不能預(yù)先確定,究竟有幾位是上商為0這是個未知數(shù),因此除法過程中所需運算步數(shù)也不能預(yù)先決定,使硬件控制設(shè)備復(fù)雜化。1101112.原碼除法——加減交替法這種方法的原理是:如果上商到i位時,所得余數(shù)為ri,那么應(yīng)有ri=2ri-1+(-Y),如果ri<0,應(yīng)上商為0,同時恢復(fù)余數(shù),即ri加上Y。然后左移一位,再作減Y運算得ri-1,再由ri-1=2(ri+Y)+(-Y)=2ri+Y,即當余數(shù)ri為負時(<0,商位上0,余數(shù)左移一次(即乘2)加上除數(shù)即得新的余數(shù)ri-1;如果ri>0,商位上1,余數(shù)左移一次,減去除數(shù),即得新的余數(shù)ri-1,稱為加減交替法,其規(guī)則為:余數(shù)ri為正,商上1,余數(shù)左移一位減除數(shù);余數(shù)ri為負,商上0,余數(shù)左移一位加除數(shù)。112例3-15例3-15X=+0.1101,Y=+0.1111|X|=00.1101,|Y|=00.1111用原碼加減交替法求:[X]原/[Y]原按除法規(guī)則,符號位Zs=Xs⊕Ys=0[|Y|]變補=11.0001絕對值相除如下:113114115例3-16例3-16X=+0.1000,Y=-0.1010|X|=00.1000,|Y|=00.1010用原碼加減交替法求:[X]原/[Y]原按除法規(guī)則,符號位Zs=Xs⊕Ys=1-|Y|=[|Y|]變補=11.0110絕對值相除如下:116例3-16結(jié)果商為[Z]原=1.1100,余數(shù)R=0.1000×2-4
Z=-0.1100,余數(shù)R=0.1000×2-4
1171183.原碼加減交替法除法運算器原碼加減交替法除法運算器框圖如圖3-15所示119120n位原碼加減交替法除法運算器的原理框圖主要由二個n+2位寄存器A、B、一個n+1位寄存器C、一個n+2位加法器D
、兩個二選一的選擇器E和F
、一個n+2位求補器NEG、一個n+2位緩沖噐BUF以及減法計數(shù)器CR組成。n+2位寄存器A中存放被除數(shù)X(雙符號位Xs’Xs),在運算過程中存放部分余數(shù),n+2位寄存器B中存放除數(shù)Y(雙符號位Ys’Ys),第1次|X|-|Y|,若余數(shù)為正(Xs=0),Qi上‘1’,A-C
左移后,下一次|X|-|Y|(|X|+[|Y|]變補)若余數(shù)為負(Xs=1),Qi上‘0’,A-C
左移后,下一次|X|+|Y|用來n+1位寄存器C存放商初值為00000,在運算過程中最低位保存每次求得的商Q。,該位商作為下次操作是做加法或減法的控制位,Q=0,做加法,Q=1,做減法。121設(shè)n=4,寄存器
A=Xs’XsX1X2X3X4,寄存噐B=Ys’YsY1Y2Y3Y4,寄存噐C=00000寄存器A-C級聯(lián)在左移控制信號CSL作用下可實現(xiàn)左移,減法計數(shù)器CRi初值置n+1,每左移一次并+|Y|/-|Y|后,CR-1,當CR=0時運算結(jié)束。若最后一次一部分積為負,商上(0)最后一次+|Y|。1224.補碼除法——補碼加減交替法采用補碼加減交替法的除法操作過程如下:被除數(shù)、除數(shù)用雙符號位補碼表示,商與余數(shù)也用補碼表示。除法是被除數(shù)(或部分余數(shù))減除數(shù),這里涉及夠減與不夠減的概念:當被除數(shù)(或部分余數(shù))的絕對值大于等于除數(shù)的絕對值,表示夠減;當被除數(shù)(或部分余數(shù))的絕對值小于除數(shù)的絕對值,表示不夠減。當兩數(shù)同號時,做減法,兩數(shù)異號時,做加法。當被除數(shù)(或部分余數(shù))與除數(shù)同號時,如果得到的新部分余數(shù)與除數(shù)同號,表示夠減,否則表示不夠減;當被除數(shù)(或部分余數(shù))與除數(shù)異號時,如果得到的新部分余數(shù)與除數(shù)異號,表示夠減,否則表示不夠減;123除法操作和上商的規(guī)則除法操作和上商的規(guī)則為:1.[X]補和[Y]補同號:[X]補-[Y]補,若余數(shù)[Ri]補與[Y]補同號商上“1”,下次操作為[Ri+1]補=2[Ri]補-[Y]補余數(shù)[Ri]補與[Y]補異號商上“0”,下次操作為[Ri+1]補=2[Ri]補+[Y]補2.[X]補和[Y]補異號:[X]補+[Y]補,若余數(shù)[Ri]補與[Y]補同號商上“1”,下次操作為[Ri+1]補=2[Ri]補-[Y]補余數(shù)[Ri]補與[Y]補異號商上“0”,下次操作為[Ri+1]補=2[Ri]補+[Y]補3.商符在求商時自動生成——即第一次得出的商。4.末位恒置“1”。124例3-17例3-17X=+0.1000,Y=-0.1101用補碼加減交替法求:[X]補/[Y]補[X]補=00.1000,[Y]補=11.0011[-Y]補=00.1101125例3-17結(jié)果商為[Z]原=1.0111,余數(shù)R=0.1011×2-4
Z=-0.1001,余數(shù)R=0.1011×2-4
1261273.3
邏輯運算3.3.1“與”、“或”和“非”運算3.3.2“異或”運算128邏輯運算電子計算機能夠進行各種復(fù)雜的數(shù)學(xué)問題的運算,能夠控制各種生產(chǎn)過程的運行,能夠處理許多繁瑣的情報資料等等,也就是它能替代人的部分腦力勞動,其關(guān)鍵在于它具有邏輯判斷能力。
129邏輯運算用F表示電燈是“亮”還是“滅”這一命題,F(xiàn)=“1”表示燈“亮”,F(xiàn)=“0”表示燈“滅”,這里的“0”與“1”就有了新的含義——邏輯含義,它表示一種命題的兩種相應(yīng)的結(jié)果。如果“1”表示“肯定”,則“0”就表示“否定”。兩值判據(jù)在計算機中是很容易實現(xiàn)的,可以用電平的“高”“低”,信號的“有”“無”,晶體管的“通”“斷”來表示邏輯命題的兩種相反結(jié)果“0”和“1”。1303.3.1.“與”、“或”和“非”運算有3種最基本的邏輯運算,即“與”邏輯、“或”邏輯和“非”邏輯。1.邏輯“與”有一電燈F同開關(guān)A、B及電池串接如圖3-16所示,規(guī)定A、B為“1”表示開關(guān)閉合,A、B為“0”表示開關(guān)“斷開”;F為“1”表示燈“亮”,為“0”表示燈“滅”。當A和B取不同值(“0”、“1”)的組合時,F(xiàn)的求值(“0”、“1”)如表3-5所示,該表稱為邏輯關(guān)系的“真值表”。131邏輯“與”
132邏輯“與”當A與B同時為“1”時,F(xiàn)才為“1”,F(xiàn)和A、B之間的關(guān)系就稱為“與”邏輯關(guān)系,“邏輯與”又稱為“邏輯乘”,其邏輯表達式為:F=A×B=A·B=A∧B式中“×”“·”和“∧”為邏輯與的符號,A、B稱為邏輯變量,F(xiàn)稱為邏輯函數(shù),注意A、B、F在邏輯運算中只有“0”和“1”兩種取值。1332.邏輯“或”有一電燈F同兩個并聯(lián)開關(guān)A、B相串聯(lián),如圖3-17所示,A、B、F的取值約定同“與”邏輯,同樣可以列出真值表,見表3—6。由真值表可見,當A或B為“1”時(或同時為“1”時)F為“1”。F和A與B之間的這種關(guān)系為“或”邏輯關(guān)系,“邏輯或”又稱“邏輯加”,其邏輯表達式為F=A+B=A∨B。式中“+”和“∨”為邏輯或的符號。134邏輯“或”1353.邏輯“非”一個單刀雙擲開關(guān)同A、B兩個燈泡連接如圖3—18所示,A、B的取值為“1”表示燈“亮”,為“0”表示燈“滅”。同樣可列出其真值表,見表1—5,由表可見,A為“0”,B為“1”,A為“1”,B為“0”,A與B是相反相成的關(guān)系,稱為“邏輯非”關(guān)系,又稱為“邏輯反”,其邏輯表達式為:136邏輯“非”1373.3.2.“異或”運算除上述三種基本的邏輯運算外,在計算機中還常用另一種邏輯運算——異或運算。有一邏輯函數(shù)F=f(A,B),其真值表如表3—8所示。由真值表可知,只有當A=‘0’,B=“1”(即A、B相異)或A=“1”、B=“0”時,F(xiàn)才為“1”,F(xiàn)同A、B間的這種關(guān)系稱為“異或”關(guān)系,其邏輯表達式:138“異或”運算“異或”運算執(zhí)行的是兩個邏輯變量之間“不相等”的邏輯測試,又稱為“按位加”。 139“1”和“0”在電子計算機中,上述幾種基本邏輯運算是由邏輯門電路來實現(xiàn)的,在邏輯門電路中,用電位“高”、“低”來表示“1”和“0”,例如在正邏輯中,高電平表示“1”,低電平表示“0”。140圖3-19常見的邏輯門的符號表示
141圖3-9基本門電路的真值表1423.4定點運算器的基本結(jié)構(gòu)與工作原理定點運算器中一般由ALU部件、寄存器、多路選擇器、移位器和數(shù)據(jù)通路等組成,一個典型的定點運算器結(jié)構(gòu)如圖3-20所示。143圖3-20定點運算器結(jié)構(gòu)
1443.4.1移位電路在定點運算中移位操作是不可缺少的,除一般的左移、右移操作外,乘法與除法運算中,移位操作也是不可或缺的。為此在定點運算器中必然包含有移位電路。圖3-21為一個具有直通,左移一位,右移一位的移位電路原理圖。145圖3-21移位電路
146移位電路該移位電路是由三個三選一的選擇器組成的,三選一電路的工作過程是:以中間選擇器為例,輸入信號為b,輸出信號為a。當S1S0=00是,a2=b3右移;S1S0=01時,a2=b2直通;S1S0=10時,a2=b1左移。據(jù)此,在圖3-14所示的移位電路中,選擇信號S1S0用來控制移位功能。當S1S0=00時a3a2a1=b4b3b2,三位代碼右移1次;S1S0=01時a3a2a1=b3b2b1,三位代碼直通傳送;S1S0=10時a3a2a1=b2b1b0,三位代碼左移一次。在上述移位電路的基礎(chǔ)上,增加選擇信號S以增加移2位,移4位和移8位等功能,構(gòu)成桶形移位器。1473.4.2定點運算的主要組成:圖3-20所示的定點運算器由如下幾部分組成。148定點運算器1.寄存器組由若干個通用寄存器組成,為一個輸入端口和二個輸出端口的結(jié)構(gòu),輸出分別送A寄存器和B寄存器,可以通過寄存器號來選擇輸入寄存器,以及輸出寄存器。2.A寄存器、B寄存器和Q寄存器A寄存器,B寄存器接收來自寄存器組的數(shù)據(jù),作為ALU二個運算數(shù)據(jù)的來源之一;B寄存器的數(shù)據(jù)也可直接送到選擇電路3。Q寄存器,接收來自移位電路1的數(shù)據(jù),其輸出可反饋到其移位電路1的輸入端(左、右移輸入端)。實現(xiàn)數(shù)據(jù)的左移1位或右移1位的操作。Q寄存器輸出通過三選一電路1送入ALU的輸入端。Q寄存器在進行乘除法運算時可用作乘數(shù)及商寄存器。149定點運算器3.ALU為多功能算術(shù)邏輯運算部件參加運算的二個數(shù)據(jù)來自:①選擇電路1——三選一電路,輸入來自Q寄存器、A寄存器和B寄存器;②選擇電路2—二選一電路,輸入來自B寄存器和外部輸入。ALU輸出端送選擇電路3——二選一電路,可以選擇ALU輸出或B寄存器輸出。4.移位電路1和移位電路2:可進行左移1位,右移1位以及直通操作,移位數(shù)據(jù)可以來自ALU輸出(移位電路1,還可對Q寄存器反饋回來的信息進行左移或右移1位的操作)。ALU的加減操作和移位操作可以在同一操作步驟中完成。1503.5浮點數(shù)運算和浮點數(shù)運算器的實現(xiàn)3.5.1二進制數(shù)的浮點運算3.5.2浮點運算器的基本結(jié)構(gòu)1513.5.1二進制數(shù)的浮點運算1.浮點數(shù)的加減法運算:兩浮點數(shù)X、Y,分別為:X=MX·2Ex
(注:式中把(-1)S包含在M中,當S=0時,M為正數(shù);S=1時,M為負數(shù))Y=MY·2Ey
浮點數(shù)加減法運算規(guī)則為:
X±Y=MX·2Ex±MY·2Ey=(MX·2Ex-Ey±MY)2Ey,EY≥EX浮點數(shù)加減運算的步驟如下:152浮點數(shù)的加減法運算兩浮點數(shù)X、Y,分別為:(注:式中把(-1)S包含在M中,當S=0時,M為正數(shù);S=1時,M為負數(shù))
153浮點數(shù)的加減法運算浮點數(shù)加減法運算規(guī)則為:154浮點數(shù)加減運算的步驟如下:1.對階:首先檢查兩數(shù)的小數(shù)點位置是否對齊,即兩數(shù)階碼是否相等,只有兩數(shù)的階碼相同,才能進行尾數(shù)的加減運算。若兩數(shù)的階碼不同必須進行對階,即將原來階碼小的尾數(shù)部分右移,并相應(yīng)增加其階碼,以使浮點數(shù)值不變,尾數(shù)右移1次,階碼加1,對階時,先求階碼差155浮點數(shù)加減運算的步驟△E=EX
-EY。若△E=0.表示兩浮點數(shù)階碼相同;△E>0,表示EX>EY,將MY右移,EY增量直到EY=EX;△E<0,表示EX<EY,將MX右移,EX增量直到EX=EY??傊瑢﹄A是階碼小的向階碼大的對齊。156浮點數(shù)加減運算的步驟尾數(shù)右移時注意二個問題:(1)右移時當末位為有效值“1”時,“1”的移出實際上降低了浮點數(shù)的精度;(2)對補碼形成的尾數(shù),正數(shù)時高位補“0”,負數(shù)時高位補“1”。2.尾數(shù)運算對階后,對階碼相同的兩個浮點數(shù)實現(xiàn)尾數(shù)的加減運算。若尾數(shù)為補碼表示,則進行補碼的加減運算。157浮點數(shù)加減運算的步驟3.運算結(jié)果規(guī)格化若尾數(shù)運算后的結(jié)果不符合規(guī)格化要求,必須對結(jié)果進行規(guī)格化處理。兩種規(guī)格化:(1)向左規(guī)格化(左規(guī))——運算結(jié)果尾數(shù)如0.001…,則將結(jié)果左移2次,階碼減2;(2)向右規(guī)格化(右規(guī))——若采用雙符號位補碼表示尾數(shù),則當運算結(jié)果尾數(shù)為01.×××…×或10.×××…×,表示尾數(shù)絕對值大于1,必須將結(jié)果右移以實現(xiàn)規(guī)格化。尾數(shù)右移1次,階碼加1。158浮點數(shù)加減運算的步驟4.舍入處理在運算過程中,對階和向右規(guī)格化,尾數(shù)必須向右移,被右移尾數(shù)的低位數(shù)據(jù)會被丟棄,造成一定的誤差,必須進行舍入處理——即按照規(guī)則調(diào)整剩余部分。159浮點數(shù)加減運算的步驟常用的舍入方法有:(1)截去法(chopping)——移去多余位,剩下位不變。其最大誤差為最低位上的“1”。(2)0舍1入法——若右移舍去的最高位為0,則舍去移出位,末位不變;若右移舍去的最高位為1,則尾數(shù)的末位加“1”。其最大誤差為最低位的-1/2到+1/2之間。(3)恒置1法——在截去多余位時,將剩下數(shù)據(jù)的最低位置“1”。其最大誤差為最低位的-1到+1之間。三種舍入法中,一般采用“0舍1入”法,其正負誤差可抵消,誤差小。160浮點數(shù)加減運算的步驟5.溢出處理在浮點數(shù)加減運算中會發(fā)生4種溢出:(1)尾數(shù)上溢——兩個同符號數(shù)相加產(chǎn)生了最高位向符號位的進位,可將尾數(shù)右移,階碼加1來調(diào)整;(2)尾數(shù)下溢——尾數(shù)右移時,最低有效位從右端丟失,要進行舍入處理;(3)階碼上溢——運算結(jié)果的階碼值超過了階碼可能表示的最大值的正指數(shù)值,一般認為是+∞~-∞;(4)階碼下溢—運算結(jié)果的階碼值超過了階碼可能表示的最小值的負指數(shù)值,一般將其認為“0”。161溢出處理浮點數(shù)運算結(jié)果的判斷是檢查階碼是否溢出,階碼下溢則置運算結(jié)果為浮點數(shù)形式的“機器零”;階碼上溢,置溢出標志,由CPU的異常處理機制進行處理。162例3-18例3-18已知兩浮點數(shù)X=-0.101000×2-101,Y=+0.111011×2-100設(shè):階碼5位(含2位階符),尾數(shù)8位(含2位尾符)求:X-Y,要求階碼、尾數(shù)都用補碼表示。解:按要求
[X]浮=11.011,11.011000[Y]浮=11.100,00.111011163例3-18①對階
[△E]補=[EX]補-[EY]補=[EX]補+[-EY]補=11.011+00.100=11.111 △E=-1,EX<EY,X的尾數(shù)右移一位,EX+1 [MX]補=11.101100 [EX]補=11.100 [X]=11.100,11.101100164例3-18②尾數(shù)相減
[MX]補-[MY]補=[MX]補+[-MY]補
=11.101100+11.000101 =10.110001 [X-Y]浮=11,100;10.110001165例3-18③規(guī)格化 右規(guī)后得[X-Y]補=11.101,11.0110001 [MX-Y]=10.110001需要右規(guī),階碼加1④舍入處理 一般采用“0舍1入法”,右規(guī)時末位丟棄1,則
11.011000末位加“1”得11.011001
則[X-Y]浮=11.101,11.011001166例3-18⑤判溢出 舍入處理后階符為“11”說明無溢出 則X-Y=—0.100111×2—011167例3-19例3-19已知X=0.11011011×2010,Y=-0.10101100×2100設(shè):階碼5位(含2位階符),尾數(shù)10位(含2位尾符)求:X+Y(要求階碼,尾數(shù)都用補碼表示)。
[X]浮
=00,010,00.11011011 [Y]浮
=00,100,11.01010100168例3-19①對階[△E]補=[EX]補-[EY]補=[EX]補+[-EY]補=00,010+11,100=11,110△E=-2EX<EYMX后移2位,EX加2得[X]浮
=00,100,00.00110110(11)(11)表示尾數(shù)MX右移2位移出之值。169例3-19②尾數(shù)相加[MX]補+[MY]補=00.00110110(11)+11.01010100=11.10001010(11)③規(guī)格化尾數(shù)為11.10…應(yīng)左規(guī),尾數(shù)左移1次階碼減1。[MX+MY]補=11.00010101(10)[EX+Y]補=00,011170例3-19④舍入處理采用“0舍1入法”,右規(guī)時丟棄1個“1”,則11.00010101末位加“1”得11.00010110則[X-Y]浮
=00,011,11.00010110⑤判溢出舍入處理后,階符為‘00’說明無溢出。則X-Y=-0.11101010×2011
應(yīng)為[X+Y]浮
應(yīng)為X+Y=-0.11101010×2011
1712.浮點數(shù)的乘除法運算浮點數(shù)乘法運算,其乘積的階碼為相乘兩數(shù)的階碼之和,其乘積的尾數(shù)為兩相乘數(shù)尾數(shù)之積。浮點數(shù)除法運算,商的階碼為被除數(shù)的階碼減去除數(shù)的階碼,其尾數(shù)為被除數(shù)的尾數(shù)除以除數(shù)的尾數(shù)所得之商。172浮點數(shù)的乘除法運算兩浮點數(shù)X、Y分別為MX=MX·2ExY=MY·2Ey乘法運算時X·Y=(MX·MY)·2Ex+Ey=Mx·y·2Exy173浮點數(shù)的乘除法運算除法運算時
X/Y=MX/MY.·2Ex-Ey=Mx/y·2Ex/y即Mx·y=Mx·MyMx/y=Mx/MyEx·y=Ex+EyEx/y=Ex-Ey174浮點數(shù)的乘除法運算1.階碼運算(1)補碼表示:乘積的階碼[Exy]補
=[Ex]補
+[Ey]補商的階碼[Ex/y]補=[Ex]補-[Ey]補溢出判別——同號的階碼相加或異號的階碼相減可能產(chǎn)生溢出,應(yīng)作溢出判斷。175浮點數(shù)的乘除法運算(2)移碼表示:按移碼定義:[Ex]移
=2n+Ex,-2n≤Ex<2n[Ey]移
=2n+Ey,-2n≤Ey<2n得:[Ex]移
+[Ey]移
=2n+Ex+2n+Ey=2n+[2n+(Ex+Ey)]=2n+[Ex+Ey]移176浮點數(shù)的乘除法運算即直接用移碼求階碼和時,其最高位多加一個2n,則要得到移碼形式的結(jié)果,必須減去2n。對應(yīng)于同一真值的移碼和補碼數(shù)值部分完全相同,符號位正好相反,則:[EY]補=2n+1+Ey,(mod2n+1)因此,求階碼和的公式為:[
溫馨提示
- 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度跨境電子商務(wù)平臺廣告服務(wù)合同4篇
- 2025年度水電工程設(shè)計與施工一體化合同匯編4篇
- 2025年度重型沖擊鉆施工工程合同4篇
- 2025年鮮蛋冷鏈配送與售后服務(wù)合同3篇
- 個人土地抵押貸款合同范本打印版(2024)一
- 2025年度智慧城市建設(shè)物業(yè)服務(wù)委托合同4篇
- 2025年度餐飲行業(yè)供應(yīng)鏈戰(zhàn)略合作框架協(xié)議3篇
- 教育技術(shù)在小學(xué)科學(xué)課題研究中的應(yīng)用與發(fā)展
- 個人借款轉(zhuǎn)讓協(xié)議簡明示例版
- 2025年度個人租賃房屋租賃合同違約責任及處理協(xié)議4篇
- 人教版物理八年級下冊 專項訓(xùn)練卷 (一)力、運動和力(含答案)
- 山東省房屋市政工程安全監(jiān)督機構(gòu)人員業(yè)務(wù)能力考試題庫-中(多選題)
- 重慶市2023-2024學(xué)年七年級上學(xué)期期末考試數(shù)學(xué)試題(含答案)
- 2024年中考語文滿分作文6篇(含題目)
- 北師大版 2024-2025學(xué)年四年級數(shù)學(xué)上冊典型例題系列第三單元:行程問題“拓展型”專項練習(原卷版+解析)
- 2023年譯林版英語五年級下冊Units-1-2單元測試卷-含答案
- 施工管理中的文檔管理方法與要求
- DL∕T 547-2020 電力系統(tǒng)光纖通信運行管理規(guī)程
- 種子輪投資協(xié)議
- 執(zhí)行依據(jù)主文范文(通用4篇)
- 浙教版七年級數(shù)學(xué)下冊全冊課件
評論
0/150
提交評論