山本ワールド
多倍長整数の除算(例1)
例1) 123454322/11111の商と余りを求める。
リトルエンディアンで表記していますa[]={ 2,2,3,4,5,4,3,2,1 }; s=8;
b[]={ 1,1,1,1,1 }; t=4;
D-10
正規化する。
k=D/(1+b[t]=10/(1+1)=5a=a*k; a[]={ 0,1,6,1,7,2,7,1,6 }; s=8;
b[]={ 5,5,5,5,5 }; t=4;
最上位の商の位置を求める
a[s]とb[t]を比較
6>5なので商の位置はu=s-t=8-4=4となる商は1となる。q'=1とする。
余りを求める。
a=61727-5555*1=6172a[]={ 0,1,6,1,2,7,1,6,0 }
答えが正なので仮商は正しい。
q[]={ 0,0,0,0,1 }
2桁目の商を求める
a[]={ 0,1,6,1,2,7,1,6,0 } s=7b[]={ 5,5,5,5,5 }; t=4;
a[s]とb[t]を比較する。
6>5なので商の位置はu=s-t=7-4=3となる商は1となる。q=1となる。
余りを求める。
a=61721-55555*1=6166a[]={0,1,6,6,6,1,6,0,0}
答えが正なので仮商は正しい。
q[]={ 0,0,0,1,1 }
3桁目の商を求める
a[]={0,1,6,6,6,1,6,0,0} s=6;b[]={ 5,5,5,5,5 }; t=4;
a[s]とb[t]を比較する。
6>5なので商の位置はu=s-t=6-4=2となる商は1となる。q=1となる。
余りを求める。
a=61666-55555*1=6111a[]={0,1,1,1,1,6,0,0,0}
答えが正なので仮商は正しい。
q[]={ 0,0,1,1,1 }
4桁目の商を求める
a[]={0,1,1,1,1,6,0,0,0}; s=5b[]={ 5,5,5,5,5 }; t=4;
a[s]とb[t]を比較する。
6>5なので商の位置はu=s-t=5-4=1となる商は1となる。q=1となる。
余りを求める。
a=61111-55555*1=5556a[]={0,6,5,5,5,0,0,0,0}
答えが正なので仮商は正しい。
q[]={ 0,1,1,1,1 }
5桁目の商を求める
a[]={0,6,5,5,5,0,0,0,0} s=4b[]={ 5,5,5,5,5 }; t=4;
a[s]とb[t]を比較する。
6>5なので商の位置はu=s-t=4-4=0となる商は1となる。q=1となる。
余りを求める。
a=55560-55555*1=10a[]={5,0,0,0,0,0,0,0,0}
答えが正なので仮商は正しい。
q[]={ 1,1,1,1,1 }
a[]={5,0,0,0,0,0,0,0,0}
a=a/kを実行すると余りa[]={ 1,0,0,0,0,0,0,0,0 } が得られる
筆算の例
※IE7以下の場合、表示がずれます
11111=q[]
----------
b[]= 55555)617271610=a[]
55555
------
061721=a[]
055555
-------
061666=a[]
055555
-------
061111=a[]
055555
------
055560=a[]
055555
------
000005=a[]