目錄
一、不恢復餘數法(non-restoring division algorithm)
二、不恢復餘數法流程圖以及例子
上期我們介紹了二進位制除法器中的恢復餘數法,本期介紹不恢復餘數法。
不恢復餘數法商數的選擇使用代替。雖然相比於不恢復餘數法演算法複雜一些,但是硬體實現上更有優勢,每產生乙個商的位元位只需要一次加或減操作,並且在減法操作後不需要進行餘數恢復,使得執行的速度更快。
其中,n為被除數,
d為除數。
r為餘數,
q為商。
商位元位-1一般儲存對映為0,由於餘數r的範圍為:-d <= r < d。比如5/3=?的r和q的結果:
5 = 2*3-1,q=2,r=-1
5 = 1*3+2,q=1,r=2
所以需要通過以下算式校準,將餘數r轉換為正數:
不恢復餘數法的流程圖如下,以下用a替代為中間暫存器,初始化為被除數n:
不恢復餘數法流程圖
使用不恢復餘數法求被除數n=10,除數d=3的商q和餘數r?
10的二進位制為1010
3的二進位制為0011
-3的二進位制為1101
初始化如下:
n = 4
d = 000110000
-d = 111010000(忽略低4位)
a = 000001010(預留一位進製)
謝謝您的閱讀!
原創不易,如果對您有幫助,記得點讚關注哦。歡迎批評指正,謝謝鼓勵!
一起「紙上談芯
」,共同學習:
不恢復餘數除法器
不恢復餘數除法器的基本演算法來自於恢復餘數除法器,區別在於當餘數變負時不停下恢復餘數而是繼續執行迭代,並在迭代中加上移位後除數而不是減去移位後除數,基本演算法如下所示 將除數向左移位到恰好大於被除數 若餘數為正 餘數減去移位後除數 若餘數為負 餘數加上移位後除數 若現餘數為正,該位結果為1,否則為0...
不恢復餘數除法器
不恢復餘數除法器的基本演算法來自於恢復餘數除法器,區別在於當餘數變負時不停下恢復餘數而是繼續執行迭代,並在迭代中加上移位後除數而不是減去移位後除數,基本演算法如下所示 將除數向左移位到恰好大於被除數 若餘數為正 餘數減去移位後除數 若餘數為負 餘數加上移位後除數 若現餘數為正,該位結果為1,否則為0...
恢復餘數除法器
恢復餘數除法器是一種常用的除法器,過程與手算除法的方法很類似,過程為 將除數向左位移直到比被除數大 執行被除數減除數操作,得餘數,並將商向左移位1位,空位補1 若餘數大於0,除數向右移位1位。如餘數小於0,餘數加當前除數,商最後一位置0,除數向右移位1位 重複到2,只到除數比最初的除數小 rtl 就...