例3) 400,000,000,000/500,999,999の商と余りを求める。

リトルエンディアンで表記しています
a[]={ 000,000,000,400 }; s=4;
b[]={ 999,999,500 }; t=3;
D=1000

正規化する。

k=D/(1+b[t]=10/(1+500)=1
a=a*k; a[]={ 000,000,000,400 }; s=4;
b[]={ 999,999,500 }; t=3;

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

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

400 < 500なので商の位置はu=s-t-1=4-3-1=0となる
仮商はq'=(a[s]*D+a[s-1])/b[t]=400000/500=800

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

r'=0
800*500 >1000*0+0となるため--q' 及び r'+=b[t]を実行する
q'=800-1=799 r'=0+500=500;

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

799*500 <1000*500+500となるので次へ進む

a-a-bq'

q[u]=799
a=a-bq'
a=400,000,000,000-500,999,999*799=400,000,000,000-400,298,999,201=-298,999,201
答えが負なので仮商は大きい
q'=q'-1=799-1=798
a=a+b=-298,999,201+500,999,999=202,000,798 s=2
q[u]=798
t>s 3>2 現在のqが商であり現在のaをkで割ると余りが求められる
a=a/k=798

筆算の例

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


                              798=q[]
                 ----------------
b[]=  500,999,999)400,000,000,000=a[]
                  399,797,999,202
                  ---------------                       
                      202,000,798=a[]