2011年5月10日火曜日

加算の順序

桁数が多い十進数でも, その筆算による足し算は小学校で習う. 最近のことは知らぬが, 昔は算盤も小学校で習った.

ところで, 筆算は下の桁から始め, 算盤は上の桁から足し始める. もちろん, 結果は同じになる. これは一体どういうことかと, 子供のころ不思議であった.

実は, 足し算(引き算もだが)は, 繰上げを正しく処理し, 全部の桁について加算するなら, どの順に桁を選んでやっても構わないのである.

算盤で 8 8 8 8 8 8 8 8 に 1 1 1 2 1 1 1 2 を足すとき, まず最初の3桁で,

8 8 8 に
1 1 1 を足すと
9 9 9 になる.

次に8に2を足すから, 10になるが, 算盤流では8を払ってその桁を0にしてから, 繰上げ処理に入る. つまり, 次の9に1を足す. それには9を払い, さらに繰上げを処理する. 3つの9から繰上げが続き, 9の上の桁に1がでて止る. 都合4回繰り上げた. 繰上げをピリオドで示し, これを 1.0.0.0.0 と表わす.

その次に3回9が得られ, 1.0.0.0.0 9 9 9 となり, 最後の8+2でまた繰上げが発生. 4回繰り上げて1.0.0.0.1.0.0.0.0 が得られる.

以上が算盤であった.

筆算だと右端の8+2から始め, この桁の結果が0, 繰上げがでる. 従って .0 となり, 繰上げがあったことを記憶して, 次の8+1に進む. この和は9だが, 繰上げがあったので, 0になって再び繰上げを記憶, 次へ進む. このようにして, .0.0.0.0 まで来た. 次は8+2なので, 和は10. それに繰上げで11になり, この桁が1となり, さらに繰上げが続く. こうして,1.0.0.0.1.0.0.0.0となる.

左右のどちらから計算しても, 繰上げの出る場所は決っている.

タイガーのような計算機ではどうか.

8 8 8 8 8 8 8 8 に
1 1 1 2 1 1 1 2 を足すと一旦
9 9 9.0 9 9 9.0 となり,

繰上げが発生した場所がマークされる. その後, 下の桁から繰上げセンサーがマークをスキャンし始める. マークがあると, 繰上げピンにより, 次の桁を1増やす. この結果繰上げが生じることがある. 今の場合もそうだ.

9 9 9.0 9 9.0.0 となり, スキャンは今つけたマークのところに来る. そして9を0にし, 次に桁との間にマークする. 繰上げで1増やそうとするとき, その桁が9でなければ繰上げ処理は終る. 0のところが 1.0.0.0.0 となるが, その次にすでにマークがあるので, 続く9を次々を0にして繰上げを伝える.

結局, 上の算盤や筆算と同じ場所で繰上げが生じ, 同じ結果になる.

足し算をランダムな順でやってみよう.

0 3 6 2 7 5 1 4 ← 足す順
1 1 1 2 1 1 1 2 ← 足す数
8 8 8 8 8 8 8 8 ← 元の数

まず順が0の桁で足す. 従って

0 3 6 2 7 5 1 4 ← 足す順
1 1 1 2 1 1 1 2 ← 足す数
9 8 8 8 8 8 8 8 ← 元の数

となる. 繰上げはない. 次に順が1の桁へ行く.

3 6 2 7 5 1 4 ← 足す順
1 1 2 1 1 1 2 ← 足す数
9 8 8 8 8 8 9 8 ← 元の数

順が2の桁へ行く

3 6 2 7 5 4 ← 足す順
1 1 2 1 1 2 ← 足す数
9 8 8.0 8 8 9 8 ← 元の数

と繰上げが生じたからその処理をして

3 6 2 7 5 4 ← 足す順
1 1 2 1 1 2 ← 足す数
9 8 9.0 8 8 9 8 ← 元の数

順が3の桁

3 6 7 5 4 ← 足す順
1 1 1 1 2 ← 足す数
9 9 9.0 8 8 9 8 ← 元の数

順が4の桁, 繰上げも処理する.

6 7 5 4 ← 足す順
1 1 1 2 ← 足す数
9 9 9.0 8 9.0.0 ← 元の数

順が5の桁

6 7 5 ← 足す順
1 1 1 ← 足す数
9 9 9.0 9.0.0.0 ← 元の数

順が6の桁

6 7 ← 足す順
1 1 ← 足す数
1.0.0.0.0 9.0.0.0 ← 元の数

順が7の桁
7 ← 足す順
1 ← 足す数
1.0.0.0.1.0.0.0.0 ← 元の数

これで, お勧めはしないが, どういう順に足してもよさそうだと分かる.

十進法の2つの数を足すとき, 各桁で加算し, 仮の和 0≤t<19を得る.

それと下の桁からの繰上げの有無により, その桁の真の和と, 上の桁への繰上げが得られる.


t<9なら, 繰上げのありなしに拘らず, 上の桁への繰上げは生じない. 真の和は, 繰上げがないならt, あるならt+1.

t=9で, 繰上げがないなら, 繰上げは生じず, 真の和は9. 繰上げがあるなら, 繰上げが生じ, 真の和は0.

10≤tなら, 繰上げのありなしに拘らず, 上の桁への繰上げが生じる. 真の和は, 繰上げがないならt-9, あるならt-10.

上の加算の例でいうと,

8 8 8 8 8 8 8 8
1 1 1 2 1 1 1 2
9 9 9 0 9 9 9 0 ← 仮の和
. . ← 繰上げ
0 0 ← 真の和
. . ← 繰上げ
0 0 ← 真の和
. . ← 繰上げ
0 0 ← 真の和
. . ← 繰上げ
1 1 ← 真の和

0 件のコメント: