非復元除算を使用して符号なし2進整数を除算する手順を知っている人はいますか?
オンラインで良い情報源を見つけるのは難しいです。
つまり、A = 101110
およびB = 010111
の場合
非復元部門でA divided by B
を見つけるにはどうすればよいですか?各ステップのレジスタはどのように見えますか?
ありがとう!
(私の答えは少し遅れていますが、将来の訪問者に役立つことを願っています)
非復元除算のアルゴリズムを下の画像に示します。
この問題では、配当(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
_を示します。
すべてのステップが表から明確であることを願っています!!!
1)レジスタAの値を0(Nビット)に設定します。
2)レジスタMの値を除数(Nビット)として設定します。
3)レジスタQの値を被除数(Nビット)として設定します。
4)AをQ {A、Q}と連結します
5)次の「N」回を繰り返します(ここで、Nは除数のビット数です)。
Aの符号ビットが0に等しい場合、
シフトAとQを1ビット左に組み合わせて減算 AからM、
それ以外の場合、シフトAとQを1ビット左に結合し、add M to A
Aの符号ビットが0の場合は、Q [0]を1に設定し、そうでない場合はQ [0]を0に設定します。
6)最後に、Aの符号ビットが1に等しい場合は、MをAに追加します。
7)Aを剰余として、Qを商として割り当てます。