ch4-3 數值的機器運算-定點除法_第1頁
ch4-3 數值的機器運算-定點除法_第2頁
ch4-3 數值的機器運算-定點除法_第3頁
ch4-3 數值的機器運算-定點除法_第4頁
ch4-3 數值的機器運算-定點除法_第5頁
已閱讀5頁,還剩17頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

第4章數值的機器運算

1被除數x,其原碼為[x]原=xf.xn-1…x1x0除數y,其原碼為[y]原=yf.yn-1…y1y0

則有商q=x/y,其原碼為[q]原=(xf⊕yf)+(0.xn-1…x1x0/0.yn-1…y1y0)?商的符號運算qf=xf⊕yf

與原碼乘法一樣;?商的數值部分的運算,實質上是兩個正數求商的運算。與乘法一樣要解決運算器位數和余數寄存器位數兩個問題。設有n位定點小數:4.5.1原碼一位除法24.5.1原碼一位除法

X=0.1011,Y=0.1101

0.1101…商0.11010.10110x被除數

1101

x>y除數右移一位,減除數

10010r11101x>y除數右移一位,減除數

10100r21101x>y除數右移兩位,減除數

111r4余數

X÷Y=商+=0.1101+0.0111×2-4/0.11010.00.0

0.000.0000.00000.00000余數除數1.手算運算步驟34.5.1原碼一位除法1、比較法4結果與手算相同,但余數不是真正的余數,多乘了2n,故正確的余數應為2-n×rn,即:0.000000010.0001第四次余數r4

1.0010被除數左移一位,2x>y,商1+1.0101減y,即+[-y]補0.0111第一次余數r1

0.1110r1左移一位,2r1>y,商1+1.0101減y0.0011第二次余數r2

0.0110r2左移一位,2r2<y,商0

0.1100r3左移一位,2r3=4r2>y,商1+1.0101減y0.10110.1001x<y,商00.1101例:x=0.1001,y=0.1011,求x/y=?[-y]補=1.0101562.恢復余數法72.原碼除法—恢復余數法取絕對值相除,兩個符號位。被除數減除數,夠減時,商1;不夠減時商0。減法用加法代替,加[-y]補(結果仍是原碼)。不夠減時需要恢復余數(加除數)。余數要乘2-n(右移n位)【例1】x=0.1001,y=0.1011,用恢復余數法求x/y.

解:[x]原=[x]補=x=0.1001,[y]補=0.1011,[-y]補=1.01018

00.1001+[-y]補

11.0101x減y11.1110余數r0<0,商“0”+[y]補

00.1011恢復余數

00.1001r0’

01.00100

商0移入q,r0’左移

+[-y]補

11.0101減y00.0111r1>0,商“1”

00.11100.1商1移入q,r1左移

+[-y]補

11.0101減y00.0011r2>0,商“1”

00.01100.11商1移入q,r2左移

+[-y]補11.0101減y11.1011r3<0,商“0”

+[y]補00.1011恢復余數

00.0110r3’=2r2

00.11000.110商0移入q,r3’左移

+[-y]補

11.0101減y00.0001r4>0,商“1”

00.00010.1101商1移入q,r4不左移

被除數x/余數r商q說明[x]原=0.1001[y]補=0.1011[-y]補=1.0101011019故:[q]原=0.1101余數[r4]原=0.00000001恢復余數法由于要恢復余數,使得除法的步數不固定,控制比較復雜。且在恢復余數時,要多作一次加法,降低了執行速度。103.加減交替法

特點:當運算過程中出現不夠減的情況,不必恢復余數,而是根據余數的符號,繼續往下運算,因此步數固定,控制簡單。運算規則:采用絕對值、用雙符號位進行計算。

當余數為正時,商1,余數左移一位,減除數;當余數為負時,商0,余數左移一位,加除數。若最后一步的余數為負,要得到正確的余數,還要恢復余數【例2】x=0.1001,y=0.1011,用加減交替法求x/y.

解:[x]原=[x]補=x=0.1001,[y]補=0.1011,[-y]補=1.010111=?12

00.1001+[-y]補

11.0101x減y11.1110余數r0<0,

11.11000商0,r和q左移一位

+[y]補

00.1011加y00.0111余數r1>000.11100.1商1,r和q左移一位+[-y]補

11.0101減y00.0011余數r2>0

00.0110

0.11商1,r和q左移一位

+[-y]補

11.0101減y11.1011余數r3<0

11.0110

0.110商0,r和q左移一位

+[y]補

00.1011加y00.0001余數r4>0

0.1101商1,僅q左移一位被除數x/余數r商q說明得:q=x/y=0.1101余數r=2-4r4=0.00000001[x]原=0.1001,[y]補=0.1011,[-y]補=1.0101134.5.1

原碼除法運算原碼除法器的實現:1、軟件實現

除法運算需要3個寄存器:

A寄存器:存放被除數X,最后A寄存器中剩下的是擴大了若干倍的余數。運算過程中A寄存器的內容將不斷地發生變化。

B寄存器:存放除數Y。

C寄存器:存放商Q,它的初值為0。2、硬件實現144.5定點除法運算4.5.2補碼除法運算

被除數和除數都用補碼表示,符號位參加運算。1.夠減的判斷參加運算的兩個數符號任意,夠減的情況如下:⑴同號X>0,Y>0,X-Y>0X<0,Y<0,-X-(-Y)>0X-Y<0⑵異號X>0,Y<0,X-(-Y)=(X+Y)>0X<0,Y>0,(-X)-Y>0X+Y<0>><<><><部分余數與除數同號部分余數與除數同號部分余數與除數異號部分余數與除數異號154.5定點除法運算2.上商規則如果[X]補和[Y]補同號,則商為正數,上商規則與原碼除法相同,即夠減時上商“1”,不夠減時上商“0”;如果[X]補和[Y]補異號,則商為負數,上商規則與同號時相反,即夠減時上商“0”,不夠減時上商“1”。

將上商規則與夠減的判斷結合起來,可得到本次余數[ri]補和除數[Y]補同號,商上“1”,反之,商上“0”。

164.5定點除法運算3.商符的確定

商符是在求商的過程中自動形成的,按補碼上商規則,第一次得出的商,就是實際應得的商符。4.求新部分余數求新余數[ri+1]補的通式如下:

[ri+1]補=2[ri]補+(1-2Qi)×[Y]補

Qi表示第i步的商。若商上“1”,下一次操作為余數左移一位,減去除數;若商上“0”,下一次操作為余數左移一位,加上除數。5.末位恒置1174.5定點除法運算補碼加減交替除法規則:[X]補與[Y]補第一次操作[ri]補與[Y]補上商求新余數[ri+1]補的操作同號[X]補-[Y]補①同號(夠減)1[ri+1]補=2[ri]補-[Y]補②異號(不夠減)0[ri+1]補=2[ri]補+[Y]補異號[X]補+[Y]補①同號(不夠減)1[ri+1]補=2[ri]補-[Y]補②異號(夠減)0[ri+1]補=2[ri]補+[Y]補18若被除數與除數同號,被除數減去除數;若被除數與除數異號,被除數加上除數。(2)余數和除數同號,商1,余數左移一位,下次減除數;余數和除數異號,商0,余數左移一位,下次加除數。(3)重復步驟(2),連同符號位在內,共做n+1步。1.補碼加減交替算法

補碼除法的被除數、除數用補碼表示,符號位和數位一起參與運算,商的符號位與數位由統一的算法求得。補碼一位除法19

11.0111

[x]補,[y]補異號+[y]補

00.1101加除數

00.0100余數和除數同號

00.10001左移一位,商1

+[-y]補

11.0011減除數

11.1011余數和除數異號11.011010左移一位,

商0

+[y]補

00.1101加除數

00.0011余數和除數同號

00.0110

101左移一位,商1

+[-y]補

11.0011減除數

11.1001

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論