您當前的位置:首頁 > 文化

定點除法運算

作者:由 菠菜 發表于 文化時間:2020-03-15

商不能大於除數對嗎

定點除法運算

1.原碼比較法和恢復餘數法

⑴比較法

比較法類似於手工運算,只是為了便於機器操作,將除數右移改為部分餘數左移,每一位的上商直接寫到暫存器的最低位。

設A暫存器中存放被除數(或部分餘數),B暫存器中存放除數,C 暫存器用來存放商Q,若A≥B,則上商1,並減除數;若A

比較法需要設定比較線路,從而增加了硬體的代價。

定點除法運算

⑵恢復餘數法

恢復餘數法是直接作減法試探方法,不管被除數(或部分餘數)減除數是否夠減,都一律先做減法。

•規則:

將被除數-除數,

結果大於0,商1,餘數左移一位。

結果小於0,商0,恢復餘數,餘數左移一位。

重複上述操作,直至商的精度滿足要求為止。

定點除法運算

恢復餘數法在計算機中較少採用的原因:

(1)恢復除數法會使得除法運算的實際操作次數不固定,從而導致控制電路比較複雜。

(2)而且在恢復餘數時,要多作一次加法,降低了除法的執行速度。

2.原碼不恢復餘數法(原碼加減交替法)

原碼不恢復餘數法是對恢復餘數法的一種改進,它減少了浪費的加法時間,且運算的次數固定,故被廣泛採用。

在恢復餘數法中,若第i-1次求商的部分餘數為ri-1,則第i次求商操作為:ri=2ri-1-Y,

若夠減,部分餘數ri=2ri-1-Y>0,商1,然後進行第i+1次操作:

ri+1=2ri-Y 。

若不夠減,部分餘數ri=2ri-1-Y<0,商0,恢復餘數後,ri’=ri+Y,然後再進行第i+1次操作:

ri+1=2ri’-Y =2(r i+Y)-Y=2ri+2Y-Y=2ri+Y

原碼不恢復餘數除法由下面的通式表示:

ri+1=2ri+(1-2Qi)Y

式中Qi為第i次所得的商,若部分餘數為正,則Qi=1,部分餘數左移一位,下一次繼續減除數;若部分餘數為負,則Qi=0,部分餘數左移一位,下一次加除數。由於加減運算交替地進行,故稱為原碼加減交替法。

除法運算需要3個暫存器。A和B暫存器分別用來存放被除數和除數,C暫存器用來存放商,它的初值為0。運算過程中A暫存器的內容為部分餘數,它將不斷地變化,最後剩下的是擴大了若干倍的餘數,只有將它乘上2-n才是真正的餘數。

例。已知:X=0。10101,Y=0。11110,求:X÷Y。

|X|=00。10101→A,|Y|=00。11110→B,0→C , [|Y|]變補=11。00010

定點除法運算

原碼不恢復餘數法需要注意的問題:

(1)在定點小數除法運算時,為了防止溢位,要求被除數的絕對值小於除數的絕對值,|X|<|Y|(|X|=|Y|除外),且除數不能為0。

(2)在原碼加減交替法中,當最終餘數為負數時,必須恢復一次餘數,使之變為正餘數,注意此時不需要再左移了。

定點除法運算

補碼加減交替除法規則

規則:

1)第一次: 若被除數與除數同號,做被除數減除數

若被除數與除數異號,做被除數加除數

2)若餘數與除數同號,商1,餘數左移一位,減除數

若餘數與除數異號,商0,餘數左移一位,加除數

3)商的末位恆置1(誤差 2-n),餘數可以是負的,不需要恢復餘數。

定點除法運算

定點除法運算

定點除法運算

標簽: 餘數  除數  原碼  被除數  ri