第3章運(yùn)算方法與運(yùn)算器_第1頁(yè)
第3章運(yùn)算方法與運(yùn)算器_第2頁(yè)
第3章運(yùn)算方法與運(yùn)算器_第3頁(yè)
第3章運(yùn)算方法與運(yùn)算器_第4頁(yè)
第3章運(yùn)算方法與運(yùn)算器_第5頁(yè)
已閱讀5頁(yè),還剩100頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、第第3章章 運(yùn)算運(yùn)算方法與運(yùn)算器方法與運(yùn)算器 3.1 移位運(yùn)算 3.2 定點(diǎn)數(shù)的加減運(yùn)算及其實(shí)現(xiàn) 3.3 定點(diǎn)乘法運(yùn)算及其實(shí)現(xiàn) 3.4 定點(diǎn)除法運(yùn)算及其實(shí)現(xiàn) 3.5 浮點(diǎn)數(shù)的算術(shù)運(yùn)算方法 3.6 邏輯運(yùn)算及其實(shí)現(xiàn) 3.7 定點(diǎn)運(yùn)算器的基本結(jié)構(gòu)3.1 移位運(yùn)算移位運(yùn)算補(bǔ)碼的移位運(yùn)算:1、左移運(yùn)算:各位依次左移,末位補(bǔ)0。 對(duì)于算術(shù)左移,若沒有改變符號(hào)位,左移相當(dāng)于乘以2。 算術(shù)左移和邏輯左移是等價(jià)的。2、右移運(yùn)算: 算術(shù)右移:符號(hào)位不變,各位(包括符號(hào)位)依次右移。(相當(dāng)于除以2) 邏輯右移:最高位補(bǔ)0,其余各位依次右移例1:已知X=0.1011 ,Y=0.0101求0.5X補(bǔ);0.25X補(bǔ);X

2、補(bǔ);2X補(bǔ);0.5Y補(bǔ);0.25Y補(bǔ); Y補(bǔ);2Y補(bǔ)。解:X補(bǔ)=0.1011 Y補(bǔ)=1.10110.5X補(bǔ)=0.01011 0.5Y補(bǔ)=1.110110.25X補(bǔ)=0.001011 0.25Y補(bǔ)=1.111011X補(bǔ)=1.0101 Y補(bǔ)=0.01012-X補(bǔ)=0.1010 (溢出) 2-Y補(bǔ)=0.10103.2 定點(diǎn)加減法運(yùn)算及其實(shí)現(xiàn)定點(diǎn)加減法運(yùn)算及其實(shí)現(xiàn)由于計(jì)算機(jī)中的進(jìn)行定點(diǎn)數(shù)的加減運(yùn)算大都是采用補(bǔ)碼。3.2.1 補(bǔ)碼的加減運(yùn)算方法(1)公式 XY補(bǔ)X補(bǔ)Y補(bǔ) XY補(bǔ)X補(bǔ)Y補(bǔ)(證明過(guò)程見教材P38)例1 X0.001010 Y0.100011 求XY補(bǔ),,XY補(bǔ)解: X補(bǔ)0.001010 Y補(bǔ)

3、0.100011 則 XY補(bǔ) X補(bǔ)-Y補(bǔ) 0.001010 + 0.100011 0.101101X補(bǔ)0.001010 Y補(bǔ)1.011101則 XY補(bǔ) X補(bǔ)Y補(bǔ) 0.001010 1.011101 1.100111例2:已知X0.25,Y0.625,求XY; XY 寫出計(jì)算的過(guò)程.例3:已知X25,Y9,求XY; XY 寫出計(jì)算的過(guò)程.例4:已知X25,Y9,求XY; XY 寫出計(jì)算的過(guò)程.(8位二進(jìn)制表示)解:例2:求XY :X0.0100000 Y0.1010000 X補(bǔ)0.0100000 Y補(bǔ)1.0110000 則 X+Y補(bǔ) X補(bǔ)+Y補(bǔ) 0.0100000 + 1.0110000 1.1

4、010000X+Y原 =0.0110000(0.375)D求XY :X補(bǔ)= 0.0100000 ,Y補(bǔ)=0.1010000 則 X-Y補(bǔ) = X補(bǔ)+Y補(bǔ) = 0.0100000 + 0.1010000 = 0.1110000X+Y原 = 0.1110000 (0.875)D例3:求XY: X=0011001 Y=0001001 X補(bǔ)=00011001,Y補(bǔ)=11110111 則 X+Y補(bǔ) = X補(bǔ)+Y補(bǔ) = 00011001 + 11110111 = 00010000X+Y原 =0010000(16)D求XY: X補(bǔ)= 00011001 ,Y補(bǔ)= 00001001 則 X-Y補(bǔ) = X補(bǔ)+Y補(bǔ)

5、 = 00011001 + 00001001 = 00100010X+Y原 = 0100010 (34)D例4:求XY: X=0011001 Y=0001001 X補(bǔ)=11100111,Y補(bǔ)=11110111 則 X+Y補(bǔ) = X補(bǔ)+Y補(bǔ) = 11100111 + 11110111 = 11011110X+Y原 =00100010(34)D求XY:X補(bǔ)= 11100111 ,-Y補(bǔ)= 00001001 則 X-Y補(bǔ) = X補(bǔ)+-Y補(bǔ) = 11100111 + 00001001 = 11110000X+Y原 = 0010000 (16)D從上述的例子可得出如下的重要結(jié)論:(1)采用補(bǔ)碼進(jìn)行加、減

6、法運(yùn)算可變減法為加法,使得運(yùn)算器中只需要設(shè)置一個(gè)加法器,便可完成加、減法運(yùn)算。(2)補(bǔ)碼加法運(yùn)算中,符號(hào)位像數(shù)碼位一樣參加家法運(yùn)算,能自然得到運(yùn)算結(jié)果的正確符號(hào)。(3)定點(diǎn)小數(shù)的補(bǔ)碼加法運(yùn)算以“2”為模;定點(diǎn)整數(shù)的補(bǔ)碼加法運(yùn)算以“2n+1”為模。即符號(hào)位向更高位的進(jìn)位自然丟失,并不影響運(yùn)算結(jié)果的正確性。 3.2.2 溢出判斷溢出:運(yùn)算結(jié)果大于機(jī)器所能表示的最大正數(shù)或者小于機(jī)器所能表示的最小負(fù)數(shù)。溢出只是針對(duì)帶符號(hào)數(shù)的運(yùn)算。 比如:X補(bǔ)=0.1010,Y補(bǔ)=0.1001,那么 X補(bǔ)+Y補(bǔ)=1.0011(溢出)兩個(gè)正數(shù)相加結(jié)果為負(fù),運(yùn)算結(jié)果錯(cuò),產(chǎn)生溢出。溢出是一種錯(cuò)誤,計(jì)算機(jī)中運(yùn)算時(shí)必須能夠發(fā)現(xiàn)這

7、個(gè)現(xiàn)象,并加以處理。判斷溢出的方法:1、采用變形補(bǔ)碼判斷溢出 變形補(bǔ)碼:采用2位符號(hào)位的補(bǔ)碼 XY 變補(bǔ)X 變補(bǔ)Y 變補(bǔ) XY 變補(bǔ)X 變補(bǔ)Y 變補(bǔ)例1 X=0.1011 Y=0.0011 求X+Y補(bǔ)解: X變補(bǔ) = 00.1011 Y變補(bǔ) = 00.0011 X+Y變補(bǔ) = 00.1011 + 00.0011 = 00.1110所以 X+Y補(bǔ) = 0.1110例2 X=0.1011 Y=0.1001 求X+Y補(bǔ)解: X變補(bǔ) = 00.1011 Y變補(bǔ) = 00.1001 X+Y變補(bǔ) = 00.1011 + 00.1001 = 01.0100 運(yùn)算結(jié)果的兩符號(hào)位是01,不相同,發(fā)生溢出,因第一

8、符號(hào)位是0,代表正數(shù), 所以稱這種溢出為“正溢出”。例3 X=0.1101 Y=0.1010 求X+Y補(bǔ)解: X變補(bǔ) = 11.0011 Y變補(bǔ) = 11.0110 X+Y變補(bǔ) = 11.0011 + 11.0110 = 10.1001結(jié)果的兩符號(hào)位是10,不相同,發(fā)生溢出,因第一符號(hào)位是1,代表負(fù)數(shù), 所以稱這種溢出為“負(fù)溢出”??偨Y(jié):采用變形補(bǔ)碼判斷溢出的原則:(1)當(dāng)兩符號(hào)位相同時(shí),沒有溢出,運(yùn)算結(jié)果正確?!?0”表正數(shù),“11”表負(fù)數(shù)。(2)當(dāng)兩符號(hào)位不同時(shí),發(fā)生溢出,運(yùn)算結(jié)果錯(cuò)誤;“01”表正溢出,“10”表負(fù)溢出2、利用符號(hào)位的進(jìn)位信號(hào)判斷 原理:設(shè)數(shù)碼位向符號(hào)位的進(jìn)位為C n-1

9、, 符號(hào)位向更高位的進(jìn)位為C n 。則 OF= C n-1 C n當(dāng) OF為“0”表示無(wú)溢出,為“1”表示溢出了。比如: X補(bǔ)=0.1010,Y補(bǔ)=0.1001 X補(bǔ)+Y補(bǔ)=1.0011 C n-1=1, C n =0 則OF=13根據(jù)加數(shù)、被加數(shù)、和的符號(hào)判斷(1)當(dāng)操作數(shù)中的加數(shù)與被加數(shù)符號(hào)相同時(shí),若結(jié)果的符號(hào)與操作數(shù)的符號(hào)不一致,表示溢出;否則,表示無(wú)溢出。(2)當(dāng)兩個(gè)符號(hào)不同的操作數(shù)相加時(shí),肯定不會(huì)產(chǎn)生溢出。例:X補(bǔ)=0.1010,Y補(bǔ)=0.1001 X補(bǔ)+Y補(bǔ)=1.0011(溢出)3.2.3 補(bǔ)碼加、減運(yùn)算的實(shí)現(xiàn) 補(bǔ)碼運(yùn)算只需要設(shè)置一個(gè)加法器。采用串行進(jìn)位方式的n位并行加法器的邏輯結(jié)

10、構(gòu)。 n個(gè)全加器(FA n-1FA0),進(jìn)位信號(hào)C i從低位向高位逐位串行傳送。兩個(gè)n位長(zhǎng)的補(bǔ)碼A和B,連同C-1一起傳送到全加器的輸入端,得到n位運(yùn)算結(jié)果S,最高位為符號(hào)位。左上方的半加器用來(lái)判定溢出。 如何區(qū)分加減運(yùn)算? M0時(shí)C-10實(shí)現(xiàn)加法運(yùn)算 M1時(shí)C-11實(shí)現(xiàn)減法運(yùn)算 1、全加器的結(jié)構(gòu)設(shè)一位全加器的三個(gè)輸入為Ai , Bi , Ci-1 二個(gè)輸出: Si , Ci Ci-1 AiBiSiCi輸 出輸 入0 11 01 00 00 1 10 1 00 0 10 0 01 01 0 00 10 11 1 01 0 11 11 1 1 經(jīng)分析化簡(jiǎn)得: Si = Ai Bi Ci-1 Ci

11、 = Ai Bi + Bi Ci-1 + Ai Ci-1 實(shí)現(xiàn):可以用邏輯器件非門、與非門、與或非門和半加器(異或門)來(lái)實(shí)現(xiàn)。問(wèn)題提出:加法器執(zhí)行時(shí)間?一般整個(gè)加法器的執(zhí)行時(shí)間主要取決于加法器的字長(zhǎng)n 的大小,與全加器的延遲時(shí)間關(guān)系不大。要提高運(yùn)算速度就是要提高加法進(jìn)位信號(hào)的傳送速度。(采用并行進(jìn)位的方式實(shí)現(xiàn))全加器的結(jié)構(gòu)圖 練習(xí)題及參考答案1.已知:X0.01111,Y0.11001,求X補(bǔ),X補(bǔ),Y補(bǔ),-Y補(bǔ), XY?XY?并判斷是否溢出。2用補(bǔ)碼運(yùn)算方法求XY?并判斷是否溢出。 (1)X0.1001,Y0.1100 (2) X0.0100,Y0.10013.用補(bǔ)碼方法求XY?并判斷是否溢

12、出。 (1)X0.0100,Y0.1001 (2) X0.1011,Y0.1010解1:X補(bǔ)1.10001,X補(bǔ)0.01111, Y補(bǔ)0.11001,Y補(bǔ)1.00111,XY0.01010(無(wú)溢出) XY0.11000(溢出,結(jié)果錯(cuò)) 解2:(1)XY1.0101(溢出,結(jié)果錯(cuò)) (2)XY0.0101(無(wú)溢出) 解3:(1)XY0.1101(無(wú)溢出) (2)XY0.0001(無(wú)溢出)3.3 定點(diǎn)乘法運(yùn)算及其實(shí)現(xiàn)實(shí)現(xiàn)乘除法運(yùn)算的方案: 1、使用乘除運(yùn)算較多,速度要求高時(shí),硬件直接實(shí)現(xiàn); 2、一般情況,配置乘除法選件; 3、而對(duì)速度要求不高的機(jī)器,用軟件實(shí)現(xiàn).3.3.1 原碼一位乘法1、手算過(guò)程

13、(兩個(gè)無(wú)符號(hào)數(shù)) 例: 11011011 1 1 0 1 1 0 1 1 1 1 0 1 1 1 0 1 0 0 0 0 1 1 0 1 1 0 0 0 1 1 1 1被乘數(shù)乘數(shù)2、計(jì)算機(jī)執(zhí)行過(guò)程:運(yùn)算規(guī)則:1)符號(hào)位不參加運(yùn)算,乘積的符號(hào)位是參加運(yùn)算的兩個(gè)符號(hào)的異或。2)絕對(duì)值參加運(yùn)算的過(guò)程: 存在3個(gè)寄存器,寄存器1用來(lái)存放部分積的初始值,初始值為0;寄存器2存放乘數(shù);寄存器3存放被乘數(shù)。 運(yùn)算時(shí)通過(guò)判斷寄存器2的最低位來(lái)判斷是加被乘數(shù)還是加0。每求一次部分積后部分積和乘數(shù)一起進(jìn)行右移。(相加右移)例:已知X=0.1011 Y=0.1001 求(X Y)原 =0.1011 =0.1001則

14、按原碼一位乘法運(yùn)算規(guī)則,求XY原的數(shù)值部分。所以|X|Y| = 0.01100011,而Zs = Xs Ys = 1 0 =1最后求得XY原 = 1.01100011 YX執(zhí)行過(guò)程 +) 0. 0 0 0 0 +) 0. 0 0 0 0 +) 0. 1 0 1 1 +) 0. 1 0 1 1 0. 0 0 0 10. 0 1 1 00. 1 1 0 00. 0 0 1 00. 0 0 1 00. 0 1 0 10. 0 1 0 10. 1 0 1 10. 0 0 0 0右移一位得部分積Z4,乘數(shù)同時(shí)右移一位右移一位得部分積Z3,乘數(shù)同時(shí)右移一位,Y1=1,加|X|右移一位得部分積Z2,乘數(shù)同時(shí)

15、右移一位, Y2=0,加0右移一位得部分積Z1,乘數(shù)同時(shí)右移一位, Y3=0,加0設(shè)部分積初值Z0=0, Y4=1,加|X|操作說(shuō)明乘 數(shù)部 分 積1 0 0 11 1 0 01 1 1 00 1 1 10 0 1 1低 位 積高 位 積流程圖 R1存放乘數(shù),最低位Yn為判斷位,R0放部分積,R0、R1具有右移功能并且是連通的。寄存器R2存放被乘數(shù),加法器用來(lái)完成部分積與位積的求和。 乘法開始時(shí),啟動(dòng)信號(hào)使計(jì)數(shù)器及 R0清0,每進(jìn)行一次“相加右移”的操作,將計(jì)數(shù)器加1.加到計(jì)數(shù)器的內(nèi)容為n。表示一次原碼一位乘法運(yùn)算結(jié)束。計(jì)數(shù)器給出信號(hào)使控制觸發(fā)器為0。 運(yùn)算結(jié)束,乘積的高n位數(shù)據(jù)在R0中,低n

16、位在R1中。 R1 中原來(lái)的乘數(shù)在移位中丟失了.原碼一位乘法邏輯框圖3.3.2 補(bǔ)碼的一位乘法原碼乘法的缺點(diǎn): 1)符號(hào)要單獨(dú)運(yùn)算。 2)對(duì)于采用補(bǔ)碼存儲(chǔ)的計(jì)算機(jī),那么計(jì)算的過(guò)程復(fù)雜。補(bǔ)碼一位乘法中比較常用的是Booth算法,也稱為比較法。1、運(yùn)算規(guī)則:1)在乘數(shù)Y的最后附加一位Y n+1=02)從乘數(shù)的最低位Y n+1開始,倒序每次取2位乘數(shù)根據(jù)規(guī)定完成相應(yīng)的“相加右移”操作。(算術(shù)右移的操作)Y iY i+1=0 0 直接右移一位 0 1 部分積+X補(bǔ),右移一位 1 0 部分積+X補(bǔ),右移一位 1 1 直接右移一位3)上面操作共進(jìn)行n+1次,最后一次不移位。例1:已知 X=13,Y=11,

17、求XY 解:X補(bǔ)=01101 Y補(bǔ)=01011 X補(bǔ)=10011XY補(bǔ)=010001111 得XY=143例2:已知 X=0.10101,Y=0.11010,求XY解: X補(bǔ)=1.01011 Y補(bǔ)=0.11010 X補(bǔ)=0.10101 XY補(bǔ)=1.0111011110 XY原=1.1000100010得XY=0.1000100010例1的解題過(guò)程例2的解題過(guò)程補(bǔ)碼一位乘法流程圖:補(bǔ)碼一位乘法器:1)各寄存器存放的是操作數(shù)部分積和乘積的補(bǔ)碼。2)符號(hào)位和數(shù)碼位一起參加運(yùn)算,可得到乘積的正確符號(hào)。3)乘數(shù)寄存器R1應(yīng)增加一位附加位,初始值為0。4)被乘數(shù)寄存器R2存放的是X補(bǔ),應(yīng)能以正反兩種方式宋

18、加法器,正送時(shí)實(shí)現(xiàn)X補(bǔ),反送時(shí)實(shí)現(xiàn)-X補(bǔ)。補(bǔ)碼一位乘法邏輯圖習(xí)題及參考答案習(xí)題1:已知X0.1101,Y0.1011,求XY的值。(分別用原碼和補(bǔ)碼兩種方法求解)習(xí)題2:已知X0.011,Y0.011,求XY的值。(分別用原碼和補(bǔ)碼兩種方法求解)答案:習(xí)題1:XY原1.10001111XY補(bǔ)1.01110001習(xí)題2:XY原0.001001XY補(bǔ)0.0010013.4 定點(diǎn)除法運(yùn)算及其實(shí)現(xiàn)3.4.1 原碼除法運(yùn)算 運(yùn)算規(guī)則1) 符號(hào)位單獨(dú)運(yùn)算,兩個(gè)操作數(shù)的絕對(duì)值相除。2) n位的原碼除法是指被除數(shù)為2n位,除數(shù),商和余數(shù)都為n位,如果被除數(shù)為n位,需要擴(kuò)展成2n位后運(yùn)算。 原碼除法包括:恢復(fù)余

19、數(shù)法和加減交替法1.恢復(fù)余數(shù)法恢復(fù)余數(shù)法與手算過(guò)程相似。例如:X0.1001,Y=0.1101,求X/Y=?解:Q fX f Y f =1最后應(yīng)給商和 余數(shù)冠以正確的符號(hào):Q0.1011R0.00012-4對(duì)上述手算過(guò)程作如下說(shuō)明:(1)對(duì)于n位除數(shù)來(lái)說(shuō),為了保證商數(shù)的數(shù)碼位n位,必須要求被除數(shù)的高端n位小于除數(shù),否則,商數(shù)的小數(shù)點(diǎn)前將為1,表示除法運(yùn)算產(chǎn)生溢出,對(duì)于定點(diǎn)除法運(yùn)算來(lái)說(shuō)這是不能允許的,遇到這種情況,除法運(yùn)算應(yīng)終止。(2)每次上商總是比較一下余數(shù)和除數(shù)的大小,若余數(shù)大于除數(shù)時(shí),則商“1”,且將余數(shù)減去除數(shù)后左移1位得新的余數(shù),若余數(shù)小于除數(shù)則商“0”,只將余數(shù)左移1位得新的余數(shù),上

20、述過(guò)程重復(fù)進(jìn)行n次,共上n位商數(shù),完成n位除法運(yùn)算的全過(guò)程。(3)最后根據(jù)符號(hào)位單獨(dú)運(yùn)算的結(jié)果,給商數(shù)冠以正確符號(hào),余數(shù)的符號(hào)位應(yīng)與被除數(shù)相同。 上述操作過(guò)程在計(jì)算機(jī)中實(shí)現(xiàn),需要稍做如下改動(dòng):(1)為判定本次除法運(yùn)算是否產(chǎn)生溢出,首先需要將被除數(shù)的高n位減去除數(shù),若其余數(shù)大于“0”,則判定本次運(yùn)算溢出,立即終止除法運(yùn)算過(guò)程;若余數(shù)小于“0”,則應(yīng)將除數(shù)加回去恢復(fù)被除數(shù),繼續(xù)除法運(yùn)算過(guò)程。(2)每次上商之前總要做一次余數(shù)減除數(shù)的操作。若該余數(shù)大于或等于“0”,則表示夠減,商“1”后將該余數(shù)左移一位得新余數(shù);若該余數(shù)小于“0”,則表示不夠減,商“0”,而且本次減法運(yùn)算不該做,應(yīng)將除數(shù)加回去,恢復(fù)原

21、來(lái)的余數(shù)后將其左移一位得新余數(shù),“恢復(fù)余數(shù)法”因此面遇名。 上述手算例子采用原碼恢復(fù)余數(shù)法在計(jì)算機(jī)中的操作過(guò)程如下:例題1:已知:X0.1001,Y=0.1101,求X/Y=?解:符號(hào)位單獨(dú)運(yùn)算:QfXf Yf1 X 原 X 原 0.1001, Y 原 Y 原 0.1101,- Y 原 1.0011, 最后給出結(jié)果,冠以正確得符號(hào): 商數(shù)Q0.1011 余數(shù)R0.000124例題2:已知:X0.01010,Y=0.11001,求X/Y=?最后給商數(shù)和余數(shù)冠以正確的符號(hào): Q=0.01100 R0.101002 2-5-5 從上述操作過(guò)程可以看出,恢復(fù)余數(shù)法存在兩個(gè)明顯的缺點(diǎn):(1)商“0”時(shí),

22、需要恢復(fù)余數(shù),降低了除法運(yùn)算得速度。(2)操作步驟不規(guī)則,商“1”時(shí)只需做3步操作,而商“0”時(shí)需要做5步操作。 2.加減交替法“加減交替法”又稱做“不恢復(fù)余數(shù)法”它是由“恢復(fù)余數(shù)法”改進(jìn)而來(lái)的。先分析恢復(fù)余數(shù)法的操作過(guò)程:第i次操作是將余數(shù)Ri左移一位后減去除數(shù)Y得新的余數(shù)Ri1,即Ri12RiY。若Ri10則商“1”,然后進(jìn)入第i+1次的操作為: 2 Ri1Y若Ri+l0則商“0”,然后需恢復(fù)余數(shù),即: 完成Ri+l+Y=2 Ri ,才進(jìn)入第i+1次操作為:4RiY如果當(dāng)?shù)趇次操作商“0”時(shí),不恢復(fù)余數(shù),而是直接進(jìn)入第i+1次操作,將小于“0”的余數(shù)(Ri1)繼續(xù)左移一位后“+Y”,即:

23、2Ri+1Y=2(2RiY)Y=4RiY可將恢復(fù)余數(shù)法改進(jìn)為: 若Ri+l0,商“1”,下次作2Ri+lY 若Ri+ln則將操作數(shù)Y的尾數(shù)右移一位,Y的階碼n加1,直到mn。若mn則將操作數(shù)X的尾數(shù)右移一位,X的階碼m加1,直到mn。3.5 浮點(diǎn)數(shù)的算術(shù)運(yùn)算方法 (2)尾數(shù)相加 尾數(shù)相加與定點(diǎn)數(shù)的加、減法相同。(3)結(jié)果規(guī)格化當(dāng)運(yùn)算結(jié)果的尾數(shù)部分不是11.0XXX或00.1XXX的形式時(shí),則應(yīng)進(jìn)行規(guī)格化處理。當(dāng)尾數(shù)符號(hào)位01或10需要右規(guī) 右規(guī)的方法是尾數(shù)連同符號(hào)位右移一位、左邊補(bǔ)上一位與最高位相同的位,和的階碼加1,右規(guī)處理后就可得到11.0XXX或00.1XXX的形式,即成為規(guī)格化的數(shù)。

24、當(dāng)運(yùn)算結(jié)果的符號(hào)位和最高有效位為11.1或00.0時(shí)需要左規(guī)。 左規(guī)的方法是尾數(shù)連同符號(hào)位一起左移一位、和的階碼減1,直到尾數(shù)部分出現(xiàn)11.0或00.1的形式為止。(4)溢出判斷 階碼的符號(hào)位出現(xiàn)01或10時(shí),表示溢出; 尾數(shù)的符號(hào)位出現(xiàn)01或10時(shí),給出的是運(yùn)算結(jié)果需要右規(guī)的信號(hào)。 說(shuō)明:1.關(guān)于舍入的操作 在進(jìn)行對(duì)階和規(guī)格化的過(guò)程中,都會(huì)遇到舍入的問(wèn)題,采用不同的舍入法,可以使算結(jié)果具有不同的精度。比較常用的舍入法有: 截尾法:遇到舍入時(shí),不管被舍掉的是什么值,應(yīng)全部將其舍棄,這是最簡(jiǎn)單的舍入法。這種方法精度低。 恒置“1”法:遇到舍入時(shí),不管右移多少位,總是將右移后保留的最后一位恒置“1

25、”。這種方法精度稍高于前者。 “0”舍“1”入法:遇到舍入,若被舍棄的最高位為“0”則舍棄,若為“1”則在保留的最末位上加1。這是一種精度較高的舍入法,但速度較慢,“1”入時(shí)要增加一次加法操作。2 .浮點(diǎn)加減法運(yùn)算中的溢出問(wèn)題 盡管浮點(diǎn)數(shù)表示數(shù)的范圍很大,但是在加減法運(yùn)算中,同樣有可能出現(xiàn)運(yùn)算溢出的情況。 而浮點(diǎn)運(yùn)算中溢出判定的方法與定點(diǎn)運(yùn)算完全不同,浮點(diǎn)加減法運(yùn)算的溢出與尾數(shù)無(wú)關(guān),由它的階碼來(lái)決定。當(dāng)運(yùn)算結(jié)果的階碼大于它所能表示的最大正數(shù)或小于它所能表示的最小負(fù)數(shù)時(shí),表示浮點(diǎn)運(yùn)算產(chǎn)生了溢出。 例如,若某次浮點(diǎn)加減法運(yùn)算的結(jié)果為: XY補(bǔ)00.111,10.1011100111 則應(yīng)對(duì)其進(jìn)行向

26、右規(guī)格化操作,即將尾數(shù)右移一位成為:11.0101110011,階碼應(yīng)加l,即應(yīng)進(jìn)行如下操作: 00.111 + 00.001 01.000這是因?yàn)殡A碼已超出它所能表示的最大正數(shù)(+7),表明本次浮點(diǎn)運(yùn)算產(chǎn)生了“溢出”。 同樣,若某次浮點(diǎn)加減法運(yùn)算的結(jié)果為: XY補(bǔ)11.010,00.0000110111應(yīng)對(duì)它進(jìn)行向左規(guī)格化操作,即將尾數(shù)左移4位成為:00.1101110000;階碼應(yīng)減4,即進(jìn)行如下操作: 11010 + 11100 4補(bǔ) 10110這是因?yàn)殡A碼已超出它所能表示的最小負(fù)數(shù)(-8),表明本次浮點(diǎn)運(yùn)算產(chǎn)生了“溢出”。 由此可以看出,浮點(diǎn)加減法運(yùn)算是否產(chǎn)生了“溢出”是由運(yùn)算結(jié)果的階

27、碼來(lái)確定的,當(dāng)階碼的兩位符號(hào)位相異時(shí),表示產(chǎn)生了溢出,這也正是階碼要采用兩位符號(hào)位的原因。但是溢出的性質(zhì)是由尾數(shù)的符號(hào)位來(lái)確定的,若其尾數(shù)的符號(hào)位為正,則為“正溢出”,否則為“負(fù)溢出”。 例1:已知某計(jì)算機(jī)模型浮點(diǎn)數(shù)格式如下:階碼3位,外加符號(hào)位,尾數(shù)7位,外加符號(hào)位?,F(xiàn)有兩個(gè)十進(jìn)制數(shù)X105.3,Y33.5。(1)請(qǐng)將X和Y這兩個(gè)數(shù)轉(zhuǎn)換成二進(jìn)制浮點(diǎn)數(shù)。(2)請(qǐng)按計(jì)算機(jī)浮點(diǎn)運(yùn)算操作步驟,求X+Y的二進(jìn)制數(shù)值。 解:(1)(105.3)10=(1101001.0100110)2轉(zhuǎn)化為規(guī)格化浮點(diǎn)形式為:階碼為00111,尾數(shù)為00.1101001(010)(括號(hào)中為移掉的數(shù)位)。(33.5)10=

28、(100001.1000000)2轉(zhuǎn)化為規(guī)格化浮點(diǎn)形式為:階碼為00110,尾數(shù)為00.1000011。 (2)求階差和對(duì)階:E為1。Y的階碼小,應(yīng)使Y的尾數(shù)右移1位,階碼加1。此時(shí)Y的階碼為00111,尾數(shù)00.0100001(1)(括號(hào)中為移掉的數(shù)位)。尾數(shù)求和:00.1101001(010)+00.0100001(1)=01.0001010(110)。規(guī)格化處理:兩個(gè)符號(hào)位不同,要執(zhí)行右規(guī)處理。結(jié)果為001000101(0110),階碼為01000。舍人處理:按照0舍1人,將其舍掉。判溢出:階碼的符號(hào)位為01,發(fā)生溢出,置溢出標(biāo)識(shí)。 例2:設(shè)浮點(diǎn)數(shù)的階碼為4位(含階符),尾數(shù)為8位(含尾

29、符),按機(jī)器補(bǔ)碼浮點(diǎn)運(yùn)算步驟,完成下列XY補(bǔ)運(yùn)算。 X=5(18/32), Y=12(8/16) 解:X=010110010=23 0.10110010 , Y=11001000=240.11001000 X補(bǔ)=0011,0.1011001 , Y補(bǔ)=0100,0.1100100對(duì)階:E0011+1100=1111,其真值位1,即X的階碼比Y的階碼小1,X的尾數(shù)應(yīng)右移1位,階碼加1得:X=0100,0.0101101 (0舍1入)。尾數(shù)相加減用雙符號(hào),即X Y補(bǔ) 00.0101101 00.0101101+ 00.1100100 + 11.0011100 01.0010001 11.10010

30、01結(jié)果規(guī)格化由于加運(yùn)算結(jié)果的尾數(shù)為01.XX的形式,所以應(yīng)右規(guī),尾數(shù)右移一位,階碼加1,所以結(jié)果為:XY補(bǔ)0101,0.1001001 (0舍1入),XY=21010.1001001由于減運(yùn)算結(jié)果的尾數(shù)為11.1XX的形式,所以應(yīng)左規(guī),尾數(shù)左移一位,階碼減1,所以結(jié)果為:XY補(bǔ)=0011,1.0010010,XY=0.1101110 20113.5.2浮點(diǎn)乘法運(yùn)算 設(shè)X=2mMx,Y=2nMy 則XY=2m+n(MxMy), 其中,Mx,My分別為X和Y的尾數(shù)。 浮點(diǎn)乘法運(yùn)算也可以分為3個(gè)步驟: 1.階碼相加: 2.尾數(shù)相乘: 尾數(shù)相乘可按定點(diǎn)乘法運(yùn)算的方法進(jìn)行運(yùn)算。 3.結(jié)果規(guī)格化:3.5

31、.3浮點(diǎn)除法運(yùn)算 X=2mMx,Y=2nMy則XY=2mn(MxMy),其中,Mx,My分別為X和Y的尾數(shù)。浮點(diǎn)除法運(yùn)算也可以分3步進(jìn)行: (1)如果被除數(shù)的尾數(shù)大于除數(shù)的尾數(shù),則將被除數(shù)的尾數(shù)右移一位并相應(yīng)調(diào)整階碼。 (2)階碼求差 (3)尾數(shù)相除 兩個(gè)尾數(shù)相除與定點(diǎn)除法相同。 下面通過(guò)一個(gè)實(shí)例來(lái)說(shuō)明其運(yùn)算過(guò)程例如:已知X0.01002111,Y+0.11112010,求QXY?解: X原11.111,11.0100 X補(bǔ)11.001,11.1100 Y原11.010,00.1111 Y補(bǔ)11.110,00.1111(1)階碼相減 Xe補(bǔ)11.001 + Ye補(bǔ)00.010 Qe補(bǔ)11.01

32、1 (2)尾數(shù)相除(擬采用補(bǔ)碼除法) Xm補(bǔ)11.1100 Ym補(bǔ)00.1111 Ym補(bǔ)11.0001 于是:Qm補(bǔ)11.1100 Rm補(bǔ)11.110024(3)對(duì)結(jié)果規(guī)格化 商 Qm原0.0100 左移1位得: Qm原0. 1000 階碼Qe原101001110最后得:商數(shù)Q0.10002110 余數(shù)R0.010024習(xí)題及參考答案:例3:設(shè)數(shù)的階碼為4位,尾數(shù)9位,均含符號(hào)位,用浮點(diǎn)運(yùn)算方法計(jì)算: 23(-13/16)(2411/16) 。例4:設(shè)數(shù)的階碼為4位,尾數(shù)9位,均含符號(hào)位,用浮點(diǎn)運(yùn)算方法計(jì)算: (2-213/32)(2311/16)。 解3:X=23(13/16)=2011(0

33、.1101) , Y=2411/16=21000.1011 XY=2111(0.1101)0.1011 設(shè)X=0.1101,Y=0.1011,下面用補(bǔ)碼一位乘法求:(0.1101)0.1011補(bǔ) X補(bǔ)=1.0011,Xl補(bǔ)=0.1101, Y補(bǔ)0.1011 0.11010.1011補(bǔ)1.01110001最后求得:XY補(bǔ)201111.01110001 解4:X=(2-213/32)=2010(0.1001) , Y=2311/16=20110.1011 XY=2-101(0.1001)0.1011利用補(bǔ)碼的不恢復(fù)余數(shù)除法求:(0.1001)0.1011求解得:Q1.0011 R1.11112-4

34、 (余數(shù)與被除數(shù)同號(hào))所以:XY210111.00113.6 3.6 邏輯運(yùn)算及其實(shí)現(xiàn)邏輯運(yùn)算及其實(shí)現(xiàn) 計(jì)算機(jī)中除了進(jìn)行加、減、乘、除等基本算術(shù)運(yùn)算以外,還可對(duì)兩個(gè)或一個(gè)邏輯數(shù)進(jìn)行邏輯運(yùn)算。所謂邏輯數(shù),是指不帶符號(hào)的二進(jìn)制數(shù)。利用邏輯運(yùn)算可以進(jìn)行兩個(gè)數(shù)的比較,或者從某個(gè)數(shù)中選取某幾位等操作。例如,當(dāng)利用計(jì)算機(jī)做過(guò)程控制時(shí),我們可以利用邏輯運(yùn)算對(duì)一組輸入的開關(guān)量做出判斷,以確定哪些開關(guān)是閉合的,哪些開關(guān)是斷開的??傊?,在非數(shù)值應(yīng)用的廣大領(lǐng)域中,邏輯運(yùn)算是非常有用的。計(jì)算機(jī)中的邏輯運(yùn)算,主要是指邏輯非、邏輯或、邏輯與、邏輯異或等四種基本運(yùn)算。1邏輯非“邏輯非”由反相器來(lái)實(shí)現(xiàn)。2邏輯與“邏輯與”由與

35、門來(lái)實(shí)現(xiàn)。3邏輯或“邏輯或”直接由或門來(lái)實(shí)現(xiàn)。4邏輯異或 “邏輯異或”由異或門來(lái)實(shí)現(xiàn)。 3.7 3.7 定點(diǎn)運(yùn)算器的基本結(jié)構(gòu)定點(diǎn)運(yùn)算器的基本結(jié)構(gòu)1. 運(yùn)算器中數(shù)據(jù)傳送通路由于計(jì)算機(jī)內(nèi)部的主要工作過(guò)程是信息傳送和加工的過(guò)程,因此在機(jī)器內(nèi)部各部件之間的數(shù)據(jù)傳送非常頻繁。為了減少內(nèi)部數(shù)據(jù)傳送線并便于控制,通常將一些寄存器之間數(shù)據(jù)傳送的通路加以歸并,組成總線結(jié)構(gòu),使不同來(lái)源的信息在此傳輸線上分時(shí)傳送。 根據(jù)總線所處的位置,總線分為內(nèi)部總線和外部總線兩類。內(nèi)部總線是指CPU內(nèi)各部件的連線,而外部總線是指系統(tǒng)總線,即CPU與存儲(chǔ)器、IO系統(tǒng)之間的連線。本節(jié)只討論內(nèi)部總線。 按總線的邏輯結(jié)構(gòu)來(lái)說(shuō),總線可分為單向傳送總線和雙向傳送總線。所謂單向總線,就是信息只能向一個(gè)方向傳送。所謂雙向總線,就是信息可以向兩個(gè)方向傳送,既可以發(fā)送數(shù)據(jù),也可以接收數(shù)據(jù)。 下圖圖(a)是帶有緩沖驅(qū)動(dòng)器的4位雙向數(shù)據(jù)總線。其中所用的基本電路就是三態(tài)邏輯

溫馨提示

  • 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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論