繰り上がり足し算をどう脳内処理してますか? 〜10 の補数 vs. 暗記〜

週刊モーニングに「ドラゴン桜」とタイアップした「親が手伝える勉強のポイント!!」というコラムが毎週載っている.小学生の子供を持つ親がターゲットで,小学校の色々な教科の勉強のポイントを紹介しているんだけど,ここ数回は「繰り上がりのある足し算」がテーマになっている.



コラムによると繰り上がりの足し算でポイントなのは「10 の補数」であるという.10 の補数というのは,その数に足すと 10 になるような数のことで,例えば 4 に対して 6,8 に対して 2,というような具合だ.

で,実際に足し算をする時には片方の数を分解して補数から 10 を作り,そこに残りを足すということをやる.具体的にいうと「8+7」を計算する場合,7 を 2 (8 に対する補数) と 5 にわけて,2+8=10,10+5=15,と計算する.あるいは 8 を 3 と 5 に分けて以下同様,という方法も考えられる.それでもって「8 が来たら 2」「7 が来たら 3」というように,ある数に対する 10 の補数がぱっと答えられるようになることが必要不可欠ですよ,というような話が書いてある.



この一連の話を読んでて,当初,わけがわからなかった.

…はあ? なんでこんなわけわからん複雑な処理をしてるんだ??

補数を想定し,被加数を分解し,10 を作り,残りをさらに足すだと? なんか一時レジスタがやたらと必要じゃね? ほんとに小学一年生の短期記憶でこなせるのか? えーと,

a ← 8;
b ← 7;
c ← complement(a); # (=2).complement() は 10 の補数のルックアップテーブル.覚える.
c ← b - c; # (=5)
return (10 + c);

みたいなことをやるわけだから,脳内では常に一時的なレジスタ c を保持しなければならない.しかも 2 になったと思ったら即 5 になるので混乱しやすい.また実質的に引き算を含んでいるのでさらに混乱する.さらに上記は多分かなり慣れて来た頃の処理を表してて (「8 の補数は 2!」→「7-2=5!」→「機械的に 10 を足して 15!」),最初のうちは 2+8=10 という別の足し算と,それをさらに保持するレジスタが必要になるはず.



…多分こういう教え方をしているというのは,皆さんこの方式で処理してるってことなんだろうな.えー,実は自分は脳内でこういう処理はまったくやってません.ではどうしてるかというと,一桁の数の足し算 ([1-9]+[1-9]) の結果は全部暗記してます.単なるルックアップテーブルです.7+8=15 ってのは導出するものじゃなくて,2+4=6 や 7×8=56 と同様,単に答えを暗記.メモリは喰うけど,[1-5]+[1-5] の組合せよりたかだか 26 通り分多いに過ぎません.演算上は 2 ステップ少ないし.小学生の頭にはこっちのほうが楽な気がするんだけど.



ちなみに自分が小学校でどういう教わり方をしたのかは全く記憶にない.なんかオレンジ色のマグネットタイルで教わったのは覚えてるが,10 の補数方式だったのか暗記方式だったのかは不明.多分,導入時は 10 の補数的な教え方だったんじゃないかと思うが,気がついたら暗記してた.そもそもこのコラムを読むまで自分で計算の過程を意識したことがなかった.「ああ,暗記してたのか」と気づいたのはつい最近.



なので,もしも世間のほとんどの人が 10 の補数方式で計算してたとしたらちょっとしたカルチャーショックだ.自分としては,レジで 768 円と言われて 1,273 円出すのと同じくらい頭を使う感じがするんだよなあ.慣れてしまえばどうってことないのかも知れないが,慣れない.繰り上がりでこれだけ混乱するのだから,繰り下がりの引き算なんてどうなってしまうのだろう.恐ろしい.みんなマジ頭いいな.皆さんはどちらの方式で計算していますか?



追記: そういや暗記に比べて計算が不得手な小学生だったので,やたらいろいろな計算を暗記に頼っていた.2 のべき乗とか (16,384 までは暗記してた.これは今でも役に立つ),3.14 の倍数とか,7 で割った時の循環小数 (142857) とか….



追記 (2007-01-29): 皆様からの反応とそれに対するコメントをまとめました.[2007-01-29]




関連記事: