定點數(shù)加減法_第1頁
定點數(shù)加減法_第2頁
定點數(shù)加減法_第3頁
定點數(shù)加減法_第4頁
定點數(shù)加減法_第5頁
已閱讀5頁,還剩34頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

定點數(shù)加減法第一頁,共三十九頁,2022年,8月28日在用原碼進行加減運算時,計算機實際操作是加還是減取決于指令中的操作碼和兩個操作數(shù)的符號;運算結(jié)果的符號判斷也較復(fù)雜。因此這種方法很少使用。第二頁,共三十九頁,2022年,8月28日(2)補碼加減運算①補碼加法運算

[X

]+[Y]=[X+Y]②補碼減法運算[X–Y]=[X+(-Y)]=[X]+[-Y]第三頁,共三十九頁,2022年,8月28日1.補碼加法運算公式:[x+y]補=[x]補+[y]補以模為2定義的補碼為例,分四種情況證明該式的正確性(純小數(shù))第四頁,共三十九頁,2022年,8月28日①

設(shè)x>0,y>0,則x+y>0由補碼定義,[x]補=x,[y]補=y,所以[x]補+[y]補=x+y=[x+y]補②x<0,y<0,則(x+y)<0由補碼定義,[x]補=2+x,[y]補=2+y[x]補+[y]補=2+x+2+y=2+(2+x+y),由于x+y為負數(shù),其絕對值又小于1,所以(2+x+y)就一定是小于2大于1的數(shù),上式等號右邊的2必然丟掉,又由于x+y<0,所以[x]補+[y]補=(2+x+y)=2+(x+y)=[x+y]補第五頁,共三十九頁,2022年,8月28日③x>0,y<0[x]補=x,[y]補=2+y,[x]補+[y]補=x+2+y有兩種情況A:當(dāng)(x+y)≥0時,模2丟掉,又因為(x+y)≥0,所以[x]補+[y]補=2+x+y=x+y=[x+y]補B:當(dāng)(x+y)<0時,有:[x]補+[y]補=2+x+y=[x+y]補④x<0,y>0情況與③類似。第六頁,共三十九頁,2022年,8月28日2.補碼的減法運算公式[x–y]補=[x+(–y)]補=[x]補+[–y]補只要證明[–y]補=–[y]補,上式即得證。證明如下:第七頁,共三十九頁,2022年,8月28日由于[x+y]補=[x]補+[y]補,可得①[y]補=[x+y]補–[x]補,又[x–y]補=[x+(–y)]補=[x]補+[–y]補,同理可得②[–y]補=[x–y]補–[x]補①+②得[–y]補+[y]補=[x–y]補–[x]補+[x+y]補–[x]補=[x–y]補+[x+y]補–[x]補–[x]補=[x–y+x+y]補–[x]補–[x]補=[2x]補–2[x]補=0從而有[–y]補=–[y]補[mod2]只要求得[–y]補,就可以變減法為加法,已知[y]補,求[–y]補的法則是:對[y]補各位(包括符號位)取反,然后在末位加上1,就可以得到[–y]補。第八頁,共三十九頁,2022年,8月28日③補碼運算規(guī)則根據(jù)以上討論,可將補碼加減規(guī)則歸納如下:

參加運算的操作數(shù)用補碼表示。 符號位參加運算。 若指令操作碼為加,則兩數(shù)直接相加;若操作碼為減,則將減數(shù)連同符號位一起變反加1后再與被減數(shù)相加。 運算結(jié)果用補碼表示?!纠?-3】[X]=00110110,[Y]=11001101,求[X+Y],[X-Y]。第九頁,共三十九頁,2022年,8月28日(3)溢出判別在什么情況下可能產(chǎn)生溢出?例:設(shè)定點整數(shù)字長8位,補碼表示(最高位為符號位),表示范圍為-128127,運算結(jié)果超出此范圍就發(fā)生溢出。

第十頁,共三十九頁,2022年,8月28日0001111100001101(1)31+13=44001011000111111101000001(3)63+66=129100000011100000110111110(4)-63+(-66)=-12901111111正溢負溢(2)-31+(-12)=-43111000011111010011010101第十一頁,共三十九頁,2022年,8月28日①采用一個符號位判斷溢出=S+AB②采用最高有效位的進位判斷溢出=C+C=CC③采用變形補碼判斷(雙符號位)用S、Sn分別表示結(jié)果最高符號位和第2符號位

溢出=SS兩正數(shù)相加結(jié)果為負或兩負數(shù)相加結(jié)果為正,則溢出符號位產(chǎn)生的進位與最高有效位產(chǎn)生的進位情況不同,則溢出01:結(jié)果正溢10:結(jié)果負溢第十二頁,共三十九頁,2022年,8月28日第十三頁,共三十九頁,2022年,8月28日第十四頁,共三十九頁,2022年,8月28日第十五頁,共三十九頁,2022年,8月28日第十六頁,共三十九頁,2022年,8月28日第十七頁,共三十九頁,2022年,8月28日3.定點數(shù)乘除運算(1)無符號整數(shù)一位乘法計算機中的乘法運算采用的方法是:將n位乘轉(zhuǎn)換為n次“累加與移位”,即每一步只求一位乘數(shù)所對應(yīng)的新部分積,并與原部分積作一次累加,然后右移一位。

第十八頁,共三十九頁,2022年,8月28日右圖是無符號整數(shù)一位乘的算法流程圖。圖中使用了3個寄存器A、B和C。

B用來存放被乘數(shù);

C存放乘數(shù);

A初值為0,然后存放部分積,最后存放乘積高位。由于乘數(shù)每乘一位該位代碼就不再使用,因此用A和C寄存器聯(lián)合右移以存放逐次增加的部分積,并且使每次操作依據(jù)的乘數(shù)位始終在C的最低位。乘法完成時,A與C存放的是最后乘積,其中C的內(nèi)容是乘積的低位部分。

第十九頁,共三十九頁,2022年,8月28日實現(xiàn)無符號整數(shù)一位乘法的硬件原理框圖如下圖所示。

圖中,用進位觸發(fā)器Ca保存每次累加暫時產(chǎn)生的進位,它的初值為0。在被乘數(shù)送入B、乘數(shù)送入C,A和Ca被置0后,控制邏輯控制乘法進入第1個節(jié)拍,這時由乘數(shù)位C0產(chǎn)生“加B/不加”(不加相當(dāng)于加0)信號,用以控制被乘數(shù)B是否與上次部分積相加產(chǎn)生本次部分積,然后Ca、A、C一起右移一位。重復(fù)n個節(jié)拍的操作后所得到的乘積存放在A和C中。第二十頁,共三十九頁,2022年,8月28日【例3-10】1101*1011的運算過程如圖所示。第二十一頁,共三十九頁,2022年,8月28日第二十二頁,共三十九頁,2022年,8月28日例2.13設(shè)x=–0.1101,y=–0.1011,求[x×y]原=?第二十三頁,共三十九頁,2022年,8月28日上一例在演算時也可以先計算兩小數(shù)的小數(shù)部分,算完小數(shù)部分積后再考慮積的的小數(shù)部分位數(shù),添上小數(shù)點。第二十四頁,共三十九頁,2022年,8月28日定點除法運算第二十五頁,共三十九頁,2022年,8月28日遇到的問題第二十六頁,共三十九頁,2022年,8月28日(2)無符號整數(shù)一位除法在計算機中實現(xiàn)除法運算,著重要解決如何判斷夠減與否的問題,可以用以下兩種辦法:①用邏輯線路進行比較判別,又叫做比較法。將被除數(shù)或余數(shù)減去除數(shù),如果夠減就執(zhí)行一次減法并商1,然后余數(shù)左移一位;如果不夠減就商0,同時余數(shù)左移一位。這種方法的缺點是增加硬件代價。②直接做減法試探,不論是否夠減,都將被除數(shù)或余數(shù)減去除數(shù)。若所得余數(shù)符號位為0(即正)表明夠減,上商1;若余數(shù)符號位為1(即負)表明不夠減,由于已做了減法,因此上商0并加上除數(shù)(即恢復(fù)余數(shù));然后余數(shù)左移一位再做下一步。這就是恢復(fù)余數(shù)法。

第二十七頁,共三十九頁,2022年,8月28日第二十八頁,共三十九頁,2022年,8月28日第二十九頁,共三十九頁,2022年,8月28日通過分析恢復(fù)余數(shù)法可以發(fā)現(xiàn):當(dāng)余數(shù)A為正時,上商1,下一步A左移一位再減除數(shù)B,相當(dāng)于執(zhí)行2A-B的運算;若余數(shù)A為負,上商0,并加除數(shù)以恢復(fù)余數(shù)即A+B,下一步左移一位減去除數(shù)B,這實際相當(dāng)于執(zhí)行2(A+B)-B=2A+B故在出現(xiàn)不夠減時,并不需要恢復(fù)余數(shù),只是下一步要進行2A+B的操作,因此稱為不恢復(fù)余數(shù)法或加減交替法。其算法流程如右圖所示。圖中使用3個寄存器A、B和C。運算開始時,n位除數(shù)存放在B中,2n位被除數(shù)存放在A和C寄存器中。除法完成后商放在C寄存器中,余數(shù)放在A寄存器中。從圖中可以看出,在重復(fù)n-1次操作后,如果A中的余數(shù)為負,需要恢復(fù)余數(shù)做A+B。這一步是必需的,因為最后的寄存器A中應(yīng)獲得正確的正余數(shù)。

第三十頁,共三十九頁,2022年,8月28日第三十一頁,共三十九頁,2022年,8月28日【例3-11】用不恢復(fù)余數(shù)法計算00001000÷0011。解:A、C:00001000;B:0011;[-B]補:1101。其運算過程如右圖。第三十二頁,共三十九頁,2022年,8月28日第三十三頁,共三十九頁,2022年,8月28日第三十四頁,共三十九頁,2022年,8月28日例x=+0.1001y=-0.1011求[x/y]原第三十五頁,共三十九頁,2022年,8月28日3.2.3浮點數(shù)運算方法1.浮點數(shù)加減運算設(shè)有兩個浮點數(shù):X=Mx·,Y=My·。要實現(xiàn)X+Y的運算,需要以下4個步驟才能完成。①對階操作

對階的規(guī)則是:階碼小的數(shù)向階碼大的數(shù)對齊②實現(xiàn)尾數(shù)的加(減)運算③結(jié)果規(guī)格化和溢出判斷a.左規(guī)b.右規(guī)若運算結(jié)果是非規(guī)格化的數(shù),例如尾數(shù)是11.1x…x或00.0x…x形式,就需要將尾數(shù)左移,每左移一位,階碼減1,直至滿足規(guī)格化條件為止(即尾數(shù)最高有效位的真值為1,或尾數(shù)符與最高有效位不等),這個過程稱為左規(guī)。在左規(guī)的同時應(yīng)判斷結(jié)果是否會下溢,即階碼小于所能表示的最小負數(shù)。若運算結(jié)果尾數(shù)發(fā)生溢出,例如尾數(shù)為10.xx…x或01.xx…x形式,這并不表明浮點結(jié)果會溢出,此時需調(diào)整階碼,將尾數(shù)右移一位,階碼加1,稱為右規(guī)。右規(guī)時,應(yīng)判斷結(jié)果是否會上溢,即階碼大于所能表示的最大正數(shù)。④舍入操作恒舍法,恒進法,0舍1進法為什么不是階碼大的數(shù)向階碼小的數(shù)對齊?第三十六頁,共三十九頁,2022年,8月28日下面舉一個浮點加的實例?!纠?-12】設(shè)有兩個浮點數(shù)X=20.1101012,Y=2(-0.101011)2。階碼尾數(shù)[X]浮=11,10;00.110101[Y]浮=11,11;11.010101①對階[E]=[EX]+[-EY]=1110+0001=1111,即E=-1,將MX右移一位,其階碼加1,得

=11,11;00.011011(用0舍1入法)②尾數(shù)求和

溫馨提示

  • 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)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論