例2) 450000000/59999の商と余りを求める。

リトルエンディアンで表記しています
a[]={ 0,0,0,0,0,0,0,5,4 }; s=8;
b[]={ 9,9,9,9,5 }; t=4;
D=10

正規化する。

k=D/(1+b[t]=10/(1+9)=1
a=a*k; a[]={ 0,0,0,0,0,0,0,5,4 }; s=8;
b[]={ 9,9,9,9,5 }; t=4;

最上位の商の位置を求める

a[s]とb[t]を比較

4&lt5なので商の位置はu=s-t-1=8-4-1=3となる
仮商はq'=(a[s]*D+a[s-1])/b[t]=45/5=9

q'b[t-1]>Dr'+a[s-2]のチェック

r'=0
9*9 >10*0+0となるため--q' 及び r'+=b[t]を実行する
q'=9-1=8 r'=0+5=5;

再度 q'b[t-1]>Dr'+a[s-2]のチェック

8*9 >10*5+0となるため--q' 及び r'+=b[t]を実行する
q'=8-1=7 r'=5+5=10;

r'=Dなのでq'は正しい

q[u]=7
a=a-bq'
a=450000-59999*7=450000-419993=30007
a[]={ 0,0,0,7,0,0,0,3,0 }
答えが正なので仮商は正しい。
q[]={ 0,0,0,7}

2桁目の商を求める

a[]={ 0,0,0,7,0,0,0,3,0 }; s=7
b[]={ 5,5,5,5,5 }; t=4;

a[s]とb[t]を比較する。

3&gt5なので商の位置はu=s-t=7-4-1=2となる
仮商はq'=(a[s]*D+a[s-1])/b[t]=30/5=6

q'b[t-1]>Dr'+a[s-2]のチェック

r'=0
6*5 >10*0+0となるため--q' 及び r'+=b[t]を実行する
q'=6-1=5 r'=0+5=5;

再度 q'b[t-1]>Dr'+a[s-2]のチェック

5*5 <10*5+0となるため q'は正しい q[u]=5
a=a-bq'
a=300070-59999*5=300070-299995=75
a[]={ 0,0,5,7,0,0,0,0,0 } s=3
答えが正なので仮商は正しい。
q[]={ 0,0,5,7} u=3
t>sなので、現在のqが商であり現在のaをkで割ると余りが求められる
a=a/k a[]={ 0,0,5,7,0,0,0,0,0 }

筆算の例

※IE7以下の場合、表示がずれます


                 7500=q[]
           ----------
b[]=  59999)450000000=a[]
            419993
            -------                     
             300070=a[]         
             299995
             -------
              00075=a[]