版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、第3章 運算方法與運算器3.1 定點數(shù)運算3.2 邏輯與移位運算3.3 浮點數(shù)運算3.4 運算器基本結(jié)構(gòu)3.1 定點數(shù)運算3.1.1 加減運算 有符號定點數(shù)的編碼可以用原碼、反碼、補碼、移碼等形式表示。原則上講,有符號數(shù) 的加減運算可以用任何一種編碼來實現(xiàn),但實際中用得最多、最普遍的是補碼。1.補碼加減法 補碼加法的運算法則為由式(3.1)可以看到,兩數(shù)和的補碼就等于兩數(shù)補碼之和。利用補碼求兩數(shù)之和十分 方便。例3.1 有兩個定點整數(shù)63和35,利用補碼加法求63+35。 解 根據(jù)題意,用8位二進制補碼表示63和35為則例3.2 有兩個定點整數(shù)-63和-35,利用補碼加法求-63+(-35)。
2、 解 根據(jù)題意,用8位二進制補碼表示-63和-35為則在數(shù)值的補碼表示法中,我們注意到,對一個正數(shù)求補對該數(shù)包括符號位在內(nèi)的 各位取反再加1,即可得到該數(shù)的負數(shù);若對該負數(shù)再求補,則又可得到原來的正數(shù)。也就 是說,X補 求補 =-X補 ,-X補 求補 =X補 。據(jù)此可得補碼減法的運算法則為綜上所述,補碼加減運算的規(guī)則是: (1)參加運算的操作數(shù)用補碼表示。 (2)符號位參加運算。 (3)若相加,則兩個數(shù)的補碼直接相加;若相減,則將減數(shù)連同符號位一起取反加1后 與被減數(shù)相加。 (4)運算結(jié)果為補碼表示。2.溢出及判斷 1)溢出的概念 我們首先通過下面的例子來了解什么是溢出。 例3.4 有兩個定點
3、整數(shù)63和85,利用補碼加法求63+85。 解 根據(jù)題意,用8位二進制補碼表示63和85為我們把運算結(jié)果超出規(guī)定的數(shù)值范圍而造成錯誤的現(xiàn)象稱為溢出。若運算結(jié)果大于規(guī)定 的數(shù)值范圍的上限,則稱為上溢出;若運算結(jié)果小于規(guī)定的數(shù)值范圍的下限,則稱為下溢出。 一旦確定了運算字長和數(shù)據(jù)表示方法,數(shù)據(jù)表示的范圍也就隨之確定。只要運算結(jié)果 超出所能表示的數(shù)據(jù)范圍,就會發(fā)生溢出。發(fā)生溢出時,運算結(jié)果一定是錯誤的,所以必須采取措施防止溢出發(fā)生。最簡單有效的防止溢出發(fā)生的方法是增加數(shù)據(jù)的編碼長度。在例3.4中,只要將數(shù)據(jù) 位數(shù)增加到9位以上,如采用16位編碼,就一定能防止溢出發(fā)生。 值得注意的是,只有當兩個符號相
4、同的數(shù)相加(或者是符號相異的數(shù)相減)時,運算結(jié) 果才有可能發(fā)生溢出。而在符號相異的數(shù)相加(或者是符號相同的數(shù)相減)時,永遠不會產(chǎn) 生溢出。2)溢出的判定 (1)雙符號位(變形碼)判決法。第2章已提到變形補碼,采用兩位表示符號,即00表 示正號,11表示負號,一旦發(fā)生溢出,則兩個符號位就一定不一致,通過判別兩個符號位 是否一致便可以判定是否發(fā)生了溢出。 若運算結(jié)果兩符號分別用S2、S1表示,則溢出標志 OF的邏輯表示式為當 OF=0時,判別溢出未發(fā)生;當 OF=1時,判別溢出發(fā)生。(2)進位判決法。若Cn-1表示最高數(shù)值位產(chǎn)生的進位,Cn 表示符號位產(chǎn)生的進位(即進位標志 CF),則溢出標志 O
5、F的邏輯表示式為(3)根據(jù)運算結(jié)果的符號位和進位標志判別。該方法適用于兩個同號數(shù)求和或異號數(shù) 求差時判別溢出。溢出標志 OF的邏輯表達式為其中,SF和 CF分別是運算結(jié)果的符號標志和進位標志。(4)根據(jù)運算前后的符號位進行判別。若用 Xs、Ys、Zs 分別表示兩個原始數(shù)據(jù)及運算 結(jié)果的符號位,則溢出標志 OF的邏輯表達式為該式表示,兩個正數(shù)相加的結(jié)果為負數(shù),溢出發(fā)生;或者兩個負數(shù)相加的結(jié)果為正數(shù),同樣 溢出發(fā)生。3.一位全加器的實現(xiàn) 設(shè)一位全加器的輸入分別為 Xi和Yi,低一位對該位的進位為Ci,全加器的結(jié)果(和) 為Zi,向高一位的進位為Ci+1,則實現(xiàn)一位全加器的邏輯表達式為其中,Gi為進
6、位產(chǎn)生函數(shù),Pi為進位傳遞函數(shù)。圖3.1(a)和(b)為實現(xiàn)上述邏輯的一位全加器邏輯電路及框圖表示。圖3.1 一位全加器邏輯電路及其框圖4.n 位加減器的實現(xiàn) 1)加法器 (1)行波進位加法器。將n 個一位全加器串接在一起,便可以構(gòu)成n 位二進制數(shù)加法 器,如圖3.2所示。根據(jù)補碼加法規(guī)則,圖3.2提供的二進制數(shù)加法器可以直接用于實現(xiàn)n 位補碼加法。圖3.2 行波進位加法器從圖3.2中可以看出: 加法器的進位逐位產(chǎn)生。 加法器的和逐位生成。 圖3.2中利用異或門實現(xiàn)了式(3.4)的溢出判別邏輯,該異或門的輸入是Cn-1和Cn。(2)并(先)行進位加法器(CLA)。行波進位加法器結(jié)構(gòu)簡單,實現(xiàn)成
7、本低。但其致命 的缺點在于,隨著加法器位數(shù)的增加,串行生成的進位會造成加法速度大為降低。一種有 效的改進方法是同時生成所有低位向高位的進位。根據(jù)式(3.9)可知,由輸入Xi 和Yi 就能求出Gi和Pi,在已知輸入Ci 的情況下,便可 以獲得Ci+1,那么,在輸入 Xi+1、Yi+1和 Xi、Yi、Ci 的情況下,便可以獲得Ci+2,依次類 推,便可以求出Ci+3、Ci+4,。其中,四個進位生成邏輯表示式為圖3.3 四位先行進位產(chǎn)生電路圖3.4 n 位先行進位加法器(3)組內(nèi)并行組間串行進位加法器。組內(nèi)并行組間串行進位又稱為單級先行進位。組 間進位是串行的,即每個組的進位輸入是相鄰低位組的進位輸
8、出,而每個組的進位輸出是 相鄰高位組的進位輸入。串行進位鏈的總延遲時間與分組數(shù)目成正比。 以16位加法器為例,將其分為 4 組,每組 4 位。各組內(nèi)采用 4 位并行進位加法器 (CLA),組間采用串行進位方式,這樣就構(gòu)成了組內(nèi)并行組間串行進位加法器,如圖3.5所 示。若4位 CLA 的延時為 t(=t+),則該16位并行加法器的計算時間就是4t。若 n 位加法器分為m 組,則加法器的計算時間就是mt。圖3.5 組內(nèi)并行組間串行進位加法器(4)組內(nèi)并行組間并行進位加法器。組內(nèi)并行組間并行進位加法器又稱為多級先行進 位加法器。這種加法器利用每組的Gi*+3和 Pi*+3信號再次組成先行進位鏈,即構(gòu)
9、成組內(nèi)先行 進位,組間也為先行進位的進位邏輯。下面仍以字長為16位的加法器為例,分析兩級先行 進位加法器的設(shè)計方法。16位的兩級先行進位加法器可由4個基本的先行進位邏輯和1個組間先行進位邏輯電路組成,如圖3.6所示。圖3.6 組內(nèi)并行組間并行進位加法器2)加法/減法器 在圖3.7中,利用異或門和控制信號 M 可實現(xiàn)減法運算。當 M =0時,異或門輸出Y, 實現(xiàn)加法 X+Y 的功能;當 M =1時,異或門輸出Y,Y與最低進位C0=M =1相加,實現(xiàn) 減數(shù)求補(求負),然后與 X 做加法,從而實現(xiàn)減法 X-Y 的功能。圖3.7 行波進位的n 位加法/減法器5.BCD加法器 1)8421BCD碼的使
10、用方式 在計算機中廣泛使用的 BCD碼是8421碼,它有以下兩種典型的使用方式: (1)若用一個字節(jié)(8位二進制數(shù))表示2位 BCD數(shù),即高4位表示1位 BCD 數(shù),低4 位表示1位 BCD數(shù),則此字節(jié)所表示的數(shù)稱為壓縮 BCD數(shù)。 (2)若一個字節(jié)只表示1位 BCD數(shù),即高4位為0,僅用低4位表示1位 BCD 數(shù),則 此字節(jié)所表示的數(shù)稱為非壓縮 BCD數(shù)。2)加法運算 一個多位十進制數(shù)用8421BCD碼編碼后,其形式就是一個二進制數(shù),因此可以利用 前述的n 位加法器進行加法運算,但其運算結(jié)果有可能產(chǎn)生非法 BCD碼而出現(xiàn)錯誤。3)校正 為了保證 BCD 數(shù)加法運算結(jié)果的正確性,必須進行校正。
11、對于一個字節(jié)的壓縮 BCD 數(shù)加法進行校正的法則是: (1)運算中低四位相加的結(jié)果大于9或有bit3向bit4的進位,則結(jié)果加06H。 (2)運算中高四位相加(包括由bit3向bit4的進位)的結(jié)果大于9或有bit7向更高位的 進位,則結(jié)果加60H,同時進位為1且將其看作相加結(jié)果的最高位。 (3)若高四位和低四位均不滿足上述條件,如例3.8(1)中的情況,則無須校正;若同時 滿足(1)和(2)兩項條件,則結(jié)果加66H。該法則可以推廣到多字節(jié)的壓縮 BCD 數(shù)、非壓縮 BCD 數(shù)的加法校正中,也可用于 8421碼其他運算(減法、乘法、除法)結(jié)果的校正。 在設(shè)計CPU 時,可以用軟件方式在指令系統(tǒng)
12、中設(shè)置BCD數(shù)加、減、乘、除運算的校正 指令,也可以用硬件方式在運算器中設(shè)置 BCD 碼加法器。4)BCD 碼加法器 8421BCD碼加法器采用硬件電路實現(xiàn)其加法及校正。圖3.8(a)為一位8421BCD 碼加 法器。圖中下方的4位串行進位加法器完成一位 BCD數(shù)加法,上方的串行進位加法器完成 BCD數(shù)加法結(jié)果的校正。圖3.8(b)為一位 BCD加法器的簡化框圖。圖3.8 一位8421BCD加法器將n 個一位 BCD碼加法器進位鏈串接起來,即可構(gòu)成n 位行波進位 BCD 加法器,如 圖3.9所示。其他類型 BCD碼運算器的硬件實現(xiàn)可參考前述的二進制加法器。圖3.9 n 位行波進位 BCD加法器
13、框圖6.移碼加減法 1)運算規(guī)則 由于移碼多用在浮點數(shù)的階碼中,因此這里僅就定點整數(shù)移碼的加減運算加以說明。 定點整數(shù)移碼的加減運算規(guī)則如下: (1)兩運算數(shù)據(jù)應(yīng)為移碼編碼。 (2)對兩移碼求和/差。 (3)對結(jié)果進行修正將結(jié)果的符號取反,即得到正確結(jié)果。 根據(jù)該規(guī)則,將前述的n 位加/減法運算器結(jié)果輸出端的最高位(即符號位)加一個反 相器,即可構(gòu)成移碼加/減法運算器。2)移碼運算應(yīng)注意的問題 (1)對移碼運算的結(jié)果需要加以修正,n 位數(shù)的修正量為2n -1,即對結(jié)果的符號位取 反后才是移碼形式的正確結(jié)果。 (2)移碼表示中,0有唯一的編碼,為100000。當編碼出現(xiàn)00000時,表示十進制
14、數(shù)-2n-1。該編碼若出現(xiàn)在IEEE754格式的浮點數(shù)階碼中,則表示浮點數(shù)出現(xiàn)下溢,此時 浮點數(shù)按機器零處理。3.1.2 乘法運算在一些簡單的計算機中,乘法運算可以用軟件來實現(xiàn)。利用計算機中設(shè)置的加法、移 位等指令,編寫一段程序完成兩數(shù)相乘。若 CPU 硬件結(jié)構(gòu)簡單,則這種做法實現(xiàn)乘法所用 的時間較長,速度很慢。 另一種情況是在 ALU 等硬件的基礎(chǔ)上,適當增加一些硬件構(gòu)成乘法器。這種乘法器 的硬件要復(fù)雜一些,但速度比較快。速度最快的是全部由硬件實現(xiàn)的陣列乘法器,其硬件 更加復(fù)雜。可見,可以用硬件來換取速度。1.原碼乘法運算 1)原碼一位乘法規(guī)則 假定被乘數(shù) X、乘數(shù)Y 和乘積Z 為用原碼表示
15、的純小數(shù)(下面的討論同樣適用于純整 數(shù)),分別為原碼一位乘法規(guī)則如下: (1)乘積的符號為被乘數(shù)的符號位與乘數(shù)的符號位相異或。 (2)乘積的數(shù)值為被乘數(shù)的數(shù)值與乘數(shù)的數(shù)值之積,即(3)乘積的原碼為3)原碼一位乘法的算法流程 根據(jù)上述分析,可用圖3.10所示的流程來描述求數(shù)值之積的算法。圖3.10 數(shù)值乘法算法流程例3.11 X原 =0.1101,Y原 =1.1011,求兩者之積。 解 (1)乘積的符號為z0=01=1。 (2)利用原碼一位乘法求兩乘數(shù)的數(shù)值之積,其過程見圖3.11。 (3)將乘積的符號與數(shù)值之積拼接在一起,得到最終的乘積,見圖3.11下部。圖3.11 例3.11的乘法過程4)原
16、碼一位乘法器的框圖 根據(jù)以上對原碼一位乘法的描述,可以設(shè)計出采用原碼一位乘法的乘法器,如圖3.12 所示。圖3.12 原碼一位乘法器的框圖2.補碼乘法運算 計算機中經(jīng)常采用補碼表示數(shù)據(jù),這時用原碼進行乘法運算很不方便,因此,較多計 算機采取補碼進行乘法運算。一種經(jīng)典的補碼乘法算法為布斯法,它是補碼一位乘法中的 一種,是由布斯(Booth)夫婦提出的。根據(jù)以上分析,可將布斯算法描述如下: (1)乘數(shù)與被乘數(shù)均用補碼表示,連同符號位一起參加運算。 (2)乘數(shù)最低位后增加一個附加位(用 A-1表示),設(shè)定初始值為0。 (3)從附加位開始,依據(jù)表3.1所示的操作完成式(3.20)的運算。 實現(xiàn)布斯算法
17、的流程如圖3.13所示。圖3.13 布斯算法流程圖例3.12 已知二進制數(shù) X=0.1010,Y=-0.1101。利用布斯算法求XY補 。 解 (1)將兩數(shù)用補碼表示為(2)圖3.14給出了布斯算法求解過程。由圖3.14可知,XY補 =1.011111100。圖3.14 例3.12布斯算法求解過程從圖3.14中可以看到,兩補碼乘法運算是連同它們的符號位一起進行運算的。經(jīng)過最 后一次右移,所要計算的乘積補碼(包括符號位在內(nèi))就存在 DA 聯(lián)合的寄存器中。 注意,對于小數(shù)運算,在n 次循環(huán)完成后,需增加 DA 聯(lián)合邏輯左移一位的操作,或者 在最后一次循環(huán)中不做 DA 右移而將 A 的最低位置0,這
18、樣就能在 DA 中得到小數(shù)相乘運 算的正確結(jié)果。2)布斯算法乘法器的硬件框圖 根據(jù)布斯算法的描述,可以設(shè)計出乘法器的硬件框圖,如圖3.15所示。圖3.15 布斯算法乘法器的硬件框圖3.陣列乘法器 1)手算及單元電路 在上述乘法運算中,是利用簡單的硬件進行多次加法和多次移位來實現(xiàn)乘法的。顯然, 這樣難以獲得高的運算速度。為了提高運算速度,可以采取類似人工手算的方法。設(shè)二進制數(shù) X=X3X2X1X0和Y=Y3Y2Y1Y0,計算Z=XY,列式如下: 從上式可以看到,XiYj是與運算,而Zi是對相應(yīng)列中各個與結(jié)果的求和。每一對相與 求和操作可以用圖3.16所示的基本乘加單元電路來實現(xiàn)。圖3.16 基本
19、乘加單元電路2)無符號數(shù)陣列乘法器 利用手算算式的結(jié)構(gòu)及乘加單元電路可以方便地實現(xiàn)無符號數(shù)陣列乘法器,其結(jié)構(gòu)如 圖3.17所示。在圖3.17中,每一個小框即為一個基本乘加單元,這些基本單元按照類似于手算算式 的結(jié)構(gòu)進行連接,能夠完成手算算式中的乘加功能,最終獲得兩數(shù)的乘積。 利用無符號數(shù)陣列乘法器完成原碼的數(shù)值相乘,再加入一個完成符號運算的異或門, 就構(gòu)成了原碼陣列乘法器。圖3.17 無符號數(shù)陣列乘法器3)補碼陣列乘法器 在無符號數(shù)陣列乘法器的基礎(chǔ)上,很容易實現(xiàn)補碼陣列乘法器。其基本思路是先求被乘數(shù)與乘數(shù)的絕對值(無符號數(shù)),然后進行無符號數(shù)陣列乘法,最后根據(jù)被乘數(shù)與乘數(shù)的 符號決定最終乘積的
20、符號。 為了實現(xiàn)補碼陣列乘法器,先給出一個簡單的求補電路,如圖3.18所示。從圖3.18中 可見,當控制端E=0時,輸出與輸入相同;當E=1時,可實現(xiàn)求補。只要將有符號數(shù)的 符號位加到控制端E 上,即可求得該符號數(shù)的絕對值。圖3.18 求補電路4)適于流水線工作的陣列乘法器 圖3.17所示陣列乘法器的最大缺點是:每一步部分積的計算都是用串行進位加法器來 實現(xiàn)的,因此即使采用硬件電路,其運算速度仍然很慢,令乘法器的使用者無法接受。為了 提高陣列乘法器的速度,設(shè)計者做了大量的研究,其中包括設(shè)計了適于流水線工作的陣列 乘法器,具體內(nèi)容詳見7.2.2節(jié)。3.19 補碼陣列乘法器框圖3.1.3 除法運算
21、 定點除法運算同樣可用原碼或補碼實現(xiàn)。在實現(xiàn)除法的過程中,應(yīng)注意除數(shù)不能為0, 而且還要保證相除所得的商是可以表示的。 1.原碼除法運算 1)原碼除法規(guī)則 原碼除法運算規(guī)則如下: (1)除數(shù)0。對于定點純小數(shù),|被除數(shù)|除數(shù)|;對于定點純整數(shù),|被除數(shù)|除數(shù)|。 (2)與原碼乘法類似,原碼除法的商符和商值也是分別處理的。商符等于被除數(shù)的符 號與除數(shù)的符號相異或。商值等于被除數(shù)的數(shù)值除以除數(shù)的數(shù)值。 (3)將商符與商值拼接在一起即可得到商的原碼。例3.13 設(shè)二進制數(shù) X=+0.1011,Y=+0.1101,求 XY。 解 被除數(shù) X 和除數(shù)Y 均為正數(shù),則商的符號也為正。兩數(shù)數(shù)值部分的除法手算
22、過程 如圖3.20所示。圖3.20 例3.13的除法手算過程從手算過程中可以發(fā)現(xiàn): (1)除法是通過逐次減除數(shù)來實現(xiàn)的,也就是被除數(shù)(或余數(shù))每次減去右移一位的除 數(shù),以此來決定商值。這種運算單元位數(shù)不斷擴展的方式不利于硬件實現(xiàn),所以在實際構(gòu) 成除法器時,保持除數(shù)的位置不動,而每次余數(shù)左移一位,使運算單元的有效位數(shù)保持 不變。(2)在手算過程中,人通過眼睛和大腦來判斷被除數(shù)或余數(shù)是否夠減除數(shù)(不需要相減 之后再進行判斷),以決定商是0還是1。而在 CPU 中,必須完成相減操作方能判斷余數(shù)是 否夠減。當發(fā)現(xiàn)不夠減時,余數(shù)已經(jīng)減掉了除數(shù),因此必須在下一步操作之前恢復(fù)余數(shù)。這 就是恢復(fù)余數(shù)法。2)恢
23、復(fù)余數(shù)法 利用恢復(fù)余數(shù)法實現(xiàn)原碼除法遵從上述除法規(guī)則,數(shù)值和符號單獨處理。 圖3.21為原碼恢復(fù)余數(shù)算法流程。對于定點純小數(shù)的數(shù)值部分,計算過程如下: (1)被除數(shù)左移一位,減除數(shù),若夠減,上商為 1,若不夠減,上商為 0,同時加除 數(shù)恢復(fù)余數(shù)。 (2)余數(shù)左移一位,減除數(shù),若夠減,上商為1,若不夠減,上商為0,同時加除數(shù) 恢復(fù)余數(shù)。重復(fù)此過程,直到除盡或精度達到要求為止。圖3.21 原碼恢復(fù)余數(shù)算法流程圖例3.14 若二進制被除數(shù)X=-0.10001011,除數(shù)Y=0.1110,試利用原碼恢復(fù)余數(shù)法 求 XY 的商及余數(shù)。 解 本例滿足|X|Y|,且|Y|0。 對 X 和Y 編碼,得商符=1
24、0=1。數(shù)值除法過程如圖3.22所示。圖3.22 例3.14恢復(fù)余數(shù)法實現(xiàn)數(shù)值除法的過程圖3.23 例3.15加減交替法實現(xiàn)除法的過程(2)加減交替除法器硬件電路。原碼加減交替法作除法時符號與數(shù)值運算是分別進行的。圖3.24給出了數(shù)值部分(無 符號數(shù))除法的硬件框圖。圖3.24 加減交替法除法器硬件電路框圖2.補碼除法運算 與乘法運算的情況類似,有時也需要實現(xiàn)補碼除法。1)補碼除法規(guī)則 假設(shè)進行定點純小數(shù)的補碼除法運算,其先決條件是除數(shù)0且|被除數(shù)|除數(shù)|。 補碼除法運算相對要復(fù)雜一些,其運算規(guī)則如下: (1)如果被除數(shù)與除數(shù)同號,則被除數(shù)減除數(shù);如果被除數(shù)與除數(shù)異號,則被除數(shù)加除 數(shù)。運算結(jié)
25、果均稱為余數(shù)。(2)若余數(shù)與除數(shù)同號,則上商為1,余數(shù)左移一位,然后用余數(shù)減除數(shù)得新余數(shù);若 余數(shù)與除數(shù)異號,則上商為0,余數(shù)左移一位,然后用余數(shù)加除數(shù)得新余數(shù)。 (3)重復(fù)(2),直至除盡或達到精度要求為止。 (4)修正商。在除不盡時,通常將商的最低位恒置1進行修正來保證精度。2)補碼除法算法 補碼除法算法流程如圖3.25所示。該流程圖充分體現(xiàn)了補碼除法的運算法則。從比較 被除數(shù)及除數(shù)開始,利用加減交替的方法求得余數(shù),通過比較余數(shù)與除數(shù)的符號來決定上 商為0還是為1,最后將末位置1進行商的修正。圖3.25 補碼除法算法流程框圖3.陣列除法器 前面所提到的除法器都是在加法器的基礎(chǔ)上通過多次加減
26、來實現(xiàn)除法的,其運算速度 必然受到限制。為了提高速度,可以利用專用硬件來完成除法運算。1)補碼進位及陣列基本單元 (1)補碼運算的進位。 在無符號數(shù)進行減法運算時,是用被減數(shù)加上負減數(shù)的補碼來實現(xiàn)的。而補碼運算的 進位會出現(xiàn)如下情況:當被減數(shù)小而減數(shù)大時,沒有進位或者說沒有借位);當被減數(shù)大 而減數(shù)小時,反而有進位或者說有借位)。圖3.26 可控加減單元 CAS圖3.27 由可控加減單位 CAS構(gòu)成的陣列除法器3.2 邏輯與移位運算3.2.1 邏輯運算 基本的邏輯運算包括與、或、非、異或等運算。計算機以“1”和“0”分別表示邏輯數(shù)據(jù)的 真和假兩個狀態(tài)。此時n 個0和1的數(shù)字組合不是算術(shù)數(shù)字,而
27、是沒有符號位的邏輯數(shù)據(jù)。 邏輯運算按位進行操作,各位之間互不影響,運算結(jié)果沒有進位、借位、溢出等問題。1.基本邏輯運算 計算機中采用的基本邏輯運算列于表3.2中。(1)邏輯與(AND)運算也稱為邏輯乘運算,是指對兩個操作數(shù)進行按位相與,用符號 “”或“”來表示。利用邏輯與操作可以對特定的數(shù)據(jù)位清“0”,也可以提取特定的數(shù) 據(jù)位。(2)邏輯或(OR)運算也稱為邏輯加運算,是指對兩個操作數(shù)進行按位相或,用符號 “”或“+”來表示。利用邏輯或操作可以對特定的數(shù)據(jù)位置“1”,也可以保留特定的數(shù) 據(jù)位。(3)邏輯異或(XOR)運算也稱為按位加,是指按位求兩個數(shù)模2相加的和,用符號 “”表示。若兩個操作數(shù)
28、對應(yīng)數(shù)據(jù)位相等,則異或結(jié)果為0;若兩個操作數(shù)對應(yīng)數(shù)據(jù)位不相 等,則異或結(jié)果為1。 (4)邏輯非(NOT)運算也稱為求反,是指對數(shù)據(jù)位進行取反操作,1和0分別轉(zhuǎn)換為0 和1,在變量上方加上畫線來表示。2.邏輯運算部件 實現(xiàn)邏輯與、或、異或、非運算的部件非常簡單,分別為與門、或門、異或門和反向器, 如圖3.28所示。將多個同類門集合在一起,就可以構(gòu)成對n 位邏輯數(shù)據(jù)的與門、或門、異 或門和反向器。利用這些基本的門電路,可以實現(xiàn)復(fù)雜的組合邏輯,如圖3.1中的一位全加 器、圖3.18中的求補電路等。圖3.28 邏輯運算器件3. 2. 2 移位運算對于無限長度二進制數(shù),左移或者右移n 位相當于該數(shù)乘以或
29、者除以2n 。由于計算機 的機器數(shù)字長是固定的,因此當機器數(shù)左移或右移n 位時,必然會使數(shù)據(jù)的低位或者高位 出現(xiàn)n 個空位。這些空位填寫“0”還是“1”,取決于機器數(shù)采用的是無符號數(shù)還是有符號數(shù)。 在計算機中,常見的移位運算包括邏輯移位、算術(shù)移位、不帶進位循環(huán)移位和帶進位 循環(huán)移位,具體運算過程如圖3.29所示。圖3.29 移位運算執(zhí)行過程1.邏輯移位 邏輯移位包括邏輯左移和邏輯右移兩種操作。與邏輯運算類似,邏輯移位的操作數(shù)被 認為是無符號數(shù)或邏輯數(shù)據(jù),不存在符號問題。所有數(shù)據(jù)位都參與移位運算。 (1)邏輯左移(SHL):操作數(shù)的最高位向左移出,存入狀態(tài)寄存器的進位標志位 CF, 其他位依次向
30、左移位,最低位補“0”。 (2)邏輯右移(SHR):操作數(shù)的最低位向右移出,存入狀態(tài)寄存器的進位標志位 CF, 其他位依次向右移位,最高位補“0”。例3.21 若二進制數(shù) X=10011101,求 X 邏輯左移1位和3位的結(jié)果。 解 X 邏 輯 左 移 1 位:最 高 位 1 左 移 存 入 CF 標 志 位,最 低 位 補 “0”,結(jié) 果 為00111010。 X 邏輯左移3位:所有數(shù)據(jù)位向左移動3位,高位丟棄,bit5位移入 CF標志位,空出 來的低3位補“0”,結(jié)果為11101000。 例3.22 若二進制數(shù) X=11011101,求 X 邏輯右移1位和3位的結(jié)果。 解 X 邏 輯 右
31、移 1 位:最 低 位 1 右 移 存 入 CF 標 志 位,最 高 位 補 “0”,結(jié) 果 為01101110。 X 邏輯右移3位:所有數(shù)據(jù)位向右移動3位,低位丟棄,bit2位移入 CF標志位,空出 來的高3位補“0”,結(jié)果為00011011。2.算術(shù)移位 算術(shù)移位是指將操作數(shù)據(jù)當作有符號數(shù)進行運算,在算術(shù)移位過程中必須保持移位前 后的符號位不變。 (1)算術(shù)左移(SAL):與邏輯左移操作方法相同,操作數(shù)各位按位依次左移,最高位移 入CF標志位,最低位補“0”。對于正數(shù)而言,其原碼、補碼和反碼與真值相等,在不超出編 碼表示范圍的前提下,算術(shù)左移1位等于對操作數(shù)做乘2運算。 (2)算術(shù)右移(S
32、AR):操作數(shù)各位按位依次右移,最低位移入 CF標志位,最高位用符 號位填入。對于補碼而言,算術(shù)右移1位等于對操作數(shù)做除2運算。例3.23 若二進制數(shù) X=11011101,求 X 算術(shù)左移和算術(shù)右移1位的結(jié)果。 解 X 算 術(shù) 左 移 1 位:最 高 位 1 左 移 存 入 CF 標 志 位,最 低 位 補 “0”,結(jié) 果 為10111010。X 算術(shù)右移1位:最低位1右移存入到 CF標志位,最高位補“1”,結(jié)果為11101110。3.循環(huán)移位 循環(huán)移位是指將數(shù)據(jù)的首尾相連進行移位,在整個移位過程中,數(shù)據(jù)各位信息沒有丟 失,可用于多字節(jié)數(shù)據(jù)的高低字節(jié)交換等操作。根據(jù)進位是否參與循環(huán),循環(huán)移位
33、可分為 不帶進位循環(huán)移位和帶進位循環(huán)移位。 (1)不帶進位循環(huán)左移(ROL):數(shù)據(jù)各位依次向左移位,移出的最高位移入空出的最 低位,同時存入 CF標志位。 (2)不帶進位循環(huán)右移(ROR):數(shù)據(jù)各位依次向右移位,移出的最低位移入空出的最高位,同時存入 CF標志位。(3)帶進位循環(huán)左移(RCL):數(shù)據(jù)各位依次向左移位,移出的最高位移入 CF標志位的 同時,原 CF標志位的內(nèi)容移入空出的最低位。 (4)帶進位循環(huán)右移(RCR):數(shù)據(jù)各位依次向右移位,移出的最低位移入CF標志位的 同時,原 CF標志位的內(nèi)容移入空出的最高位。例3.24 若二進制數(shù) X=11010101,CF=0,求 X 循環(huán)移位的結(jié)
34、果。 解 X 不帶進位循環(huán)左移1位的結(jié)果為10101011。 X 不帶進位循環(huán)右移1位的結(jié)果為11101010。 X 帶進位循環(huán)左移1位的結(jié)果為10101010,CF=1。 X 帶進位循環(huán)右移1位的結(jié)果為01101010,CF=1。4.移位運算部件 圖3.30為上述8種(實質(zhì)為7種)移位運算的功能實現(xiàn)電路,其中核心器件為16個 D 觸發(fā)器構(gòu)成的16位移位寄存器(通過增加 D 觸發(fā)器的數(shù)目可以擴充移位寄存器的位數(shù))。 通過與或邏輯電路控制 D 觸發(fā)器的輸入端 D,移位寄存器可實現(xiàn)所期望的移位操作。圖 3.30中,Rin為移位寄存器的輸入有效控制信號,Rout為移位寄存器的輸出允許控制信號, CF
35、為進位標志位,SHL(SAL)、SHR、SAR、ROL、ROR、RCL、RCR為實現(xiàn)相應(yīng)移位運 算的控制信號,Di為數(shù)據(jù)的第i位。圖3.30 具有7種移位運算功能的移位寄存器3.3 浮點數(shù)運算3.3.1 浮點加減運算 設(shè)兩個規(guī)格化浮點數(shù) X=Mx 2Ex 和Y=My 2Ey ,實現(xiàn) XY 運算的規(guī)則如下所述。1.對階 一般情況下,兩浮點數(shù)的階碼不會相同。也就是說,兩數(shù)的小數(shù)點沒有對齊。和我們所 熟悉的十進制小數(shù)加減一樣,在進行浮點數(shù)加減運算前需將小數(shù)點對齊,這稱為對階。只 有當兩數(shù)的階碼相同時才能進行尾數(shù)的加減運算。 對階的原則是小階對大階,也就是將小階碼浮點數(shù)的階碼變成大階碼浮點數(shù)的階碼。
36、具體做法是:小階碼每增加1,該浮點數(shù)的尾數(shù)右移一位,直到小階碼增大到與大階碼相 同。這樣在對階時丟失的是尾數(shù)的低位,造成的誤差很小。若是大階對小階,將丟失尾數(shù)的 高位,從而導(dǎo)致錯誤的結(jié)果。2.尾數(shù)加(減)運算 對階之后,尾數(shù)即可進行加(減)運算。實際運算中只需做加法即可,因為減法可以用 加法來實現(xiàn)。 3.規(guī)格化 尾數(shù)加減運算后,其結(jié)果有可能是一個非規(guī)格化數(shù)。如果結(jié)果的真值 M 不滿足1/2 |M|Emax(最大階碼) 時,發(fā)生上溢出,即乘積已無法表示;當EzEmax(最大階碼)時, 發(fā)生上溢出,即商已無法表示;當EzEmin(最小階碼)時,發(fā)生下溢出,商可用0表示。當 發(fā)生溢出,尤其是上溢時,
37、應(yīng)重新定義浮點數(shù)或?qū)Ρ怀龜?shù)、除數(shù)作出限制。 (3)被除數(shù)的尾數(shù)除以除數(shù)的尾數(shù),由于進行的是浮點數(shù)運算,因此只要求兩尾數(shù)是 規(guī)格化數(shù),并不要求被除數(shù)的絕對值小于除數(shù)的絕對值。除法可采用3.1.3節(jié)所介紹的方法 進行。(4)規(guī)格化商的尾數(shù)。根據(jù)上述規(guī)格化數(shù)的范圍,兩數(shù)相除時,可能出現(xiàn)1/2除以-1的情況,此時的商為-1/2,這不是規(guī)格化數(shù)(補碼表示時),尾數(shù)需要左規(guī),但只需要左規(guī) 1次,便可使商之尾數(shù)變?yōu)橐?guī)格化數(shù)。(5)規(guī)格化中,右規(guī)時應(yīng)注意采用某種舍入算法。 按照上述規(guī)則就可以獲得兩浮點數(shù)相除的商。圖3.33為浮點數(shù)除法的流程圖。圖3.33 浮點數(shù)除法的流程框圖3.3.3 浮點數(shù)運算的實現(xiàn)方法
38、在計算機中實現(xiàn)浮點數(shù)運算可以采用不同的方法。 1.軟件方法 在一些比較簡單的微型機、單片機中,內(nèi)部有算術(shù)邏輯單元,并設(shè)置有加減法指令,可 以依據(jù)浮點數(shù)運算流程編寫程序來實現(xiàn)浮點數(shù)運算。這種方法速度慢,工作量大,應(yīng)盡量 避免使用。2.專用浮點處理器 專用浮點處理器是為沒有浮點處理能力的處理器配置的。例如,在8086處理器構(gòu)成的 微機中可以配置浮點協(xié)處理器8087,80286微機可配置80287,80386微機可配置80387 等,這樣就可以提高計算機的浮點處理能力。今天的高檔處理器早已把浮點協(xié)處理器集成 在處理器芯片內(nèi)部,如從80486DX微機之后即是如此。 在設(shè)計計算機系統(tǒng)時,若采用的處理器不支持浮點運算,而系統(tǒng)又需要進行浮點運算, 則可以考慮在此系統(tǒng)中配置獨立的浮點協(xié)處理器。3.在處理器中設(shè)置浮點運算部件 如果有浮點運算的需求,則在設(shè)計處理器時,可以將浮點運算器放進處理器中。這樣 的處理器在設(shè)計制造出來之后就能實現(xiàn)浮點運算的功能。 顯然,后兩種方法要付出硬件上的代價,但浮點運算的速度必然比軟件實現(xiàn)要快。 浮點運算部件也
溫馨提示
- 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)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 新時代教育政策創(chuàng)新-洞察分析
- 腕關(guān)節(jié)骨性結(jié)構(gòu)疲勞損傷預(yù)測-洞察分析
- 移動支付安全風(fēng)險評估-第1篇-洞察分析
- 藥店特許經(jīng)營模式創(chuàng)新-洞察分析
- 云游戲跨域協(xié)作機制-洞察分析
- 藥酒治療風(fēng)濕病療效-洞察分析
- 漁業(yè)生態(tài)保護與修復(fù)-第2篇-洞察分析
- 元宇宙企業(yè)品牌塑造-洞察分析
- 醫(yī)療器械出口市場拓展-洞察分析
- 水電安裝行業(yè)市場壁壘-洞察分析
- 穿戴甲創(chuàng)新創(chuàng)業(yè)項目計劃書
- 軟裝公司商業(yè)計劃書
- 湖北省武漢市硚口區(qū)2023-2024學(xué)年七年級上學(xué)期期末數(shù)學(xué)試題(含答案)
- 重慶市墊江區(qū)2023-2024學(xué)年部編版七年級上學(xué)期期末歷史試卷
- 云南省昭通市巧家縣2023-2024學(xué)年五年級上學(xué)期期末考試語文試卷
- 云南省昆明市西山區(qū)2023-2024學(xué)年七年級上學(xué)期期末語文試卷
- 人教版小學(xué)數(shù)學(xué)四年級上冊5 1《平行與垂直》練習(xí)
- 公差配合與技術(shù)測量技術(shù)教案
- 國際知名高科技園區(qū)發(fā)展及對我國的經(jīng)驗借鑒
- 財政投資評審項目造價咨詢服務(wù)方案審計技術(shù)方案
- 杭州宇泰機電設(shè)備有限公司X射線機室內(nèi)探傷項目(新建)環(huán)境影響報告
評論
0/150
提交評論