2012-08-26 56 views
7

有誰知道使用非還原除法劃分無符號二進制整數的步驟嗎?非還原除法算法

在網上很難找到任何好的來源。

即如果A = 101110B = 010111

,我們怎樣才能在非恢復除法A divided by B?每個步驟中的寄存器是什麼樣的?

謝謝!

+0

查看[本網頁]的源代碼(http://www.ecs.umass.edu/ece/koren/arith/simulator/NRDiv/)。 –

回答

20

(我的回答是有點晚答覆,但我希望這將是有益的未來遊客。)

算法非恢復除法在下面的圖像中給出:

enter image description here

在這個問題中,股息(A)= 101110,即46和除數(B)= 010111,即23.

初始化:

Set Register A = Dividend = 000000 
Set Register Q = Dividend = 101110 
(So AQ = 000000 101110 , Q0 = LSB of Q = 0) 
Set M = Divisor = 010111, M' = 2's complement of M = 101001 
Set Count = 6, since 6 digits operation is being done here. 

此之後,我們開始算法,我在下面的表格顯示:

在表中,SHL(AQ) denotes shift left AQ by one position leaving Q0 blank

類似地,一個正方形符號在Q0位置分別表示,it is to be calculated later

enter image description here

希望所有的步驟是從表中清楚!!!

-1

1)設置爲0(N位寄存器A的值)
2)設置寄存器M的值作爲除數(N位)
3)設置寄存器Q的值作爲股息(N位) 5)重複以下「n」次(這裏n是除數中的位數): 如果A的符號位等於0,則移位A和Q組合,留下1位, 從A中減去M.否則移位A和Q合併,留下1位並將M加上A 現在如果A的符號位等於0,則將Q [0]設置爲1 ,否則將Q [0]設置爲0
6)最後,如果A的符號位等於1,則將M添加到A.
7)將A指定爲餘數,將Q指定爲商。