SSブログ

#2749 記数法とn進数についての質問あり July 27, 2014 [54. イメージ化能力と学力について]

 『トライEX 数学演習数Ⅰ・A+Ⅱ・B』の整数問題の章をやっていた高3の生徒が、「余り」に関する一番最後の問題を質問し、解説を見ながら解き終わった。そのあとまた手が止まっていたので、どこまで自力で考え抜くか様子を見ていたら堂々巡りで考えあぐねたのだろう、右手が上がった。「質問アリ」の合図である。

 「整数の種々の問題」(96ページ)をみていた。学校から出された宿題プリントをやるために問題集を参考書代わりに使おうとしたが、なにがなんだかわからぬという表情だった。
「この章、意味がわからないんです」
 正直だね、素直、大好きだよこういう性格。この生徒は高校生になってから数学の定期テストで1番をとったことがありどちらかというと数学が得意な優秀な生徒。しかし基本的な概念が理解できないとそこで立ち止まってしまい、先へ進めなくなるということがたまに起きる、抽象的な思考が苦手なタイプなのだろう。いろんなタイプの生徒が居るから楽しい。

 ebisu先生は10進数と2進数を比較できるように1から並べて書いてみた(ついでだから3進数表示と4進数表示と5進数表示も並べておく)。個別の事例から帰納的に法則を類推してもらいたかったからだ。左側が10進数、右側が2進数である。面白いので、しばらくお付き合いいただきたい。

 10進数表示2進数表示3進数表示4進数表示5進数表示
11111
210222
3111033
410011104
5101121110
6110201211
7111211312
81000222013
910011002114
1010101012220
1110111022321
1211001103122
1311011113123
1411101123224
1511111203330
161000012110031



 同じ数字が表記法が違うとあらわし方(数字の列)が異なる。桁上がりの原理を10進数を例にとって説明してみる。10進数で使う数字は0~9までの10個である。9に1を足すと桁上がりして10となる。二進数で使う数字は「0と1」の2個、1に1を足すと2になるが、2は使えないから桁上がりして10(2)となる。それが、上に書いた比較表の意味だ。

 具体的な問題を解くことで帰納的にわかってもらえばいから問題を3題黒板でやって見せた。
 10進数に書きかえる問題である。
(1)  100101(2)
(2)  2201(3)
(3)  435(6)

 右端の数字から順に
  n^0, n^1, n^2, n^3, ..... n^(n-1)
 とやっていけばいい。

  1*2^5+0*2^4+0*2^3+1*2^2+0*2^1+1*2^0
 =32+4+1=37

  2*3^3+2*3^2+0*3^1+1*3^0
 =54+18+1=73

 4*6^2+3*6^1+5*6^0
 =144+18+5=167

 また、しばらく手が止まっているので、訊ねたら、
「10進記数法と10進数はどこがちがうのかわからない」
 なるほど、そこからか、意味が理解できないときに立ち止まってしまう具体例だ、意味さえ理解できたらあとはスムーズにいく。面倒くさいので意味なんか考えないで計算だけできればいいと割り切る生徒もいる。もちろん、意味をしっかり理解していくタイプの方が長期的に見ると力が伸びる。
 ここでも帰納的に類推してもらいたくて、具体例を挙げて説明してみるが、その前に言葉の定義を明らかにしておかねばならない。二つの言葉の関係がわかればいい。
 記数法は数の表記方法で、10進数はさまざまある表記方法の中から10進記数法を選択して表記された個別の数字。一般化するとn進記数法とn進数がある。
 2進記数法⇒2進数
 3進記数法⇒2進数
 ・・・
 10進記数法⇒10進数
 ・・・
 16進記数法⇒16進数
 ・・・
 n進記数法⇒n進数

 普通科の生徒は1年生のときに「情報処理」という科目で2進数をならっているのだが、2年経つと忘れているのは当然のことだろう。「情報処理」では2進数の他に16進数も教えておいてほしい。35年前のコンピュータはアッセンブラという言語で16進数を使っていた。コンピュータの中はすべて2進数に直されて動いている。言語レベルを低い方から並べると、
 アッセンブラ<BASICのような逐次翻訳言語<コンパイラー言語
 コンパイラー言語は特定の言語ルールで書いたプログラムをコンパイラーが機械語(2進数)に書きなおして動く。命令を実行する都度機械語(オブジェクト・コード)に翻訳する手間がかからないので、実行速度が逐次翻訳言語よりも速い。コンパイルという作業が一つ増える。
 こんなことは35年前に仕事でコンピュータに携わったebisuにはあたりまえのことだが、高3の生徒には現実感のない話だ。
 40年程前には中学2年生の教科書に「記数法」の章があった。大型電子計算機が大学や一部の研究所や大学に普及し始めたので、基礎教育の分野で2進数を教える必要があったからだろう。現在は高校で教えることになっている。

 10進記数法の関わる問題は中学2年で連立方程式の応用問題をして出てくる。たとえば、「二桁の整数がある。各位の数字を足すと9、数字を入れ替えて元の数字を引くと45になる」というような問題である。10進数だから十位の数をx、一位の数字をyとすると
 x+y=7
 (10y+x)-(10x+y)=45
という二つの方程式ができる。十位の数を10xとか10yで表すところがミソだ。これが16進数なら、元の数字は、(16x+y)と表すことになる。中学校では二桁の数字しか問題に出てこないが、高校生になると3桁問題が出てくる。2桁を拡張すればいいだけなのだが、拡張できない生徒が少なくない。一般式まで拡張して考えていないからだろう。もちろんこんな問題で、n進数まで拡張して教える中学校の先生はほとんどいないし、ほとんどの生徒にはその必要もない。成績下位層の生徒は概念を拡張するとついていけずに、混乱を起こすだけになる。成績上位層の生徒には説明したほうがいいのだが、クラスが習熟度別に編成されていても生徒の学力に応じた説明がなされていないのが現状である。習熟度別に編成している意味がないのだが、大事な問題なので別項で論じたい。 

 話しを元に戻そう。100101は10進数の数字にも読めるし、2進数の数字にも読める、3進数の数字にも読めるが表している量はそれぞれ異なる。
 逆に、41という数字は10進数としては読めるが、2進数の数字として読むことができない。2進数で使える数字は0と1のみだから、4という数字は2進数の表記にはない数字である。
 このあたりも混乱していた。ここは記数法と表記の実際の関係を理解するために大事なポイントの一つだろう。3つ例を挙げて説明した。

 最後に、3題の問題を利用して逆演算をやらせてみた。
 10進数の37、73、167をそれぞれ2進数、3進数、6進数に戻す問題である。
 二種類やり方を例示した。縦型の割り算をひっくり返したあのやり方が簡単でいい。両方やらせることで全体像がつかみやすくなる。

<概念を拡張しその適用限界を知るべし>
 概念を適確にとらえるために、拡張してみる。10進数は0~9までの10個の数字を使う。それで足りないときは桁上がりの原理でやればどんなに大きい数字でも表記することができる。8進数では8個の数字、2進数では2個の数字0と1を使う、n進数ではn個の数字が使われてずべての数を表す。このようにn進記数法にまで拡張することを「一般化」という。

「では1進数は?」と疑問をぶつけてみる、どこまで理解したかチェックだ。
 数字は0しか使えず、桁上がりが処理できないから、数字の表記ができない。だから、2進数が一番使う数の少ない表記法だ。最低2種類の数字を使えないと桁上がりが処理できない。こういう「遊び」も必要だ。ある概念を手にしたときにそれがどこまで通用するのか、その限界を知っておいたほうがいい。あらゆる場で通用する概念や理論なんてものはないことが特定の専門分野の勉強をしていけば諒解できるだろう。 

<用語の理解=概念をつかまえる>
さて、ここで終わったのではたんなる授業の点描であるから面白くない。少し退いて問題の所在を遠望してみたい。言葉の理解の問題が潜んでいることに気がついただろうか?
 「10進記数法と10進数」は同じではないのかという問があったのだが、意味がイメージできていない。記数法という方法概念と特定の方法を適用した場合の個別的な表記というイメージが頭の中に構築されていないのだろうと思う。
 言葉と脳内のイメージの関係についてわたしは#2734「イメージの力(4):言葉のイメージ化トレーニング」で触れている。言葉をいくつかインプットしたら、それらの相互の関係を脳内に建築物のように再構成する力の持主を'C型'と呼んだ。
 ある程度トレーニングすることでこのC型の能力を開発することができる。そのためには大量の語彙をインプットすると同時に、それら相互の関係を頻繁に考えてみるというトレーニングが必要だ。
 哲学関係の本や専門書といえるレベルの本を読むのが一番いい。小説レベルの読書にとどまっていたら、この能力は鍛えられず脆弱なままに大人になる。
 年齢に応じて読む本のレベルを上げなければいけないのだが、そういう指導を小学校でも中学校でも高校でもやってくれないから、自力でやるしかない。ではどれだけの生徒が自力でそこまで到達するかというと百人に一人いればいいほうだろう。すくなくとも高校生でそういうレベルの本を読んでいなくてはならない。受験勉強に忙しいことを理由に硬い本を読まなければ、概念体系をイメージできる能力は育たない。いや、体系イメージができなくても、言葉相互の関係がイメージできるだけで充分なのである。いまとりあげている問題に関して言えば、「記数法」と「特定の記数法で表された実際の数字の列」の関係がイメージできたらそれだけで充分だ。

 中学校の数学までなら、こうした能力がなくても問題は無い。高校数学はこうした言葉をイメージする力が芽生えていた方がやりやすい。大雑把に考えて2割程度がそういう生徒だろう。
 イメージ化能力を三つに分類して以前論じたことがあった。言葉からその言葉のもつ情緒をイメージする力(A型)と図形のイメージ化能力(B型)そして概念体系のイメージ化能力(C型)の三つである。C型は概念相互の関係のイメージが基本だ。物事を理解するときにそれぞれの概念を理解し、ほかの関連概念との関係をイメージする習慣をもちたいものだ。

#2734 イメージの力(4):言葉のイメージ化トレーニング July 16, 2014より抜粋
http://nimuorojyuku.blog.so-net.ne.jp/2014-07-16
-----------------------------------------------
 言葉からイメージを創れるタイプをA型、創れないタイプをnon-A型、数直線や図形を頭の中に想い浮かべて処理することができるタイプをB型、それができないタイプをnon-B型と分類したい。
 もう一つ特別なタイプがある。文章を読みながら諸概念を構造物のようにイメージできる能力がそれである。言葉と言葉、異なる専門用語同士の関係を立体構造物を眺めるようにイメージできる能力をもつ者は稀だ。この能力をもつ者は、もたない者としばしば会話が成立たない。なぜか?同じイメージを共有できないからである。

 A型 ⇔ non-A型
 B型 ⇔ non-B型
 C型 ⇔ non-C型

 3組で各組2つだから、全部の組み合わせは2^3=8である。学力の点から言うと、
 non-A & non-B & nonC ⇒ 最弱
 A & B & C ⇒ 最強
-----------------------------------------------

<イメージ化能力の発展段階に応じた教育>
 三つのイメージ化能力から学校教育のあり方を考えると、小学校では言葉のもつイメージを脳内につくりあげる能力を磨くために、日本語の良質のテクストを大量に読ませるべきだろう。小学校低学年では理科や社会科を外して日本語テクストをたくさん読むべきだ。
(数学の巨人の岡潔は晩年にこの国の教育を憂えて教育関係の著作をいくつも書いたが、小学校低学年では理科や社会はやる必要がない、「読み・書き・計算」を徹底すべきだと説いている。)
 中学校の段階では図形のイメージ化能力を重点的にトレーニングさせたい。高校生には概念のイメージ化能力を育成するために、哲学を必修科目とすべきだ。



<関連テーマ>
---------------------------------------------------
*#2597 イメージの力(3):Aとnon-A型について  Feb. 16, 2014 
http://nimuorojyuku.blog.so-net.ne.jp/2014-02-16-2

*#2595 イメージの力(2): 6タイプに分類 Feb.16, 2014 
http://nimuorojyuku.blog.so-net.ne.jp/2014-02-16

*#2593 イメージの力(1):ピアニスト&作曲家加古隆の原風景 Feb.14, 2014 
http://nimuorojyuku.blog.so-net.ne.jp/2014-02-14

---------------------------------------------------

にほんブログ村 地域生活(街) 北海道ブログ 根室情報へ
にほんブログ村


nice!(1)  コメント(2)  トラックバック(0) 

nice! 1

コメント 2

ペトロナス

高校の情報科で「IPアドレス」を扱うときに、『従来のIPv4ではグローバルIPアドレスが足りなくなったので、IPv6を利用するようになった』と教えるときにIPv6のIPアドレスは16進数で表されることを教える時に教えれば良いのかなと思います。

n進法は高校の数学Aでも習うので、16進数を扱っても十分理解できると思います。



by ペトロナス (2014-07-27 14:50) 

ebisu

ペトロナスさん

コメントありがとうございます。
なるほど、IPアドレスはバージョン6で128ビットに拡張されたのですね。
128ビットを16ビット単位に区切ってコロンを間に挟み16進法で表現する。

IPv4は32ビットだから、
2^32≒40億、
これでは現在の世界人口が70億人なら30億人もIPアドレスをもてない人が出てくる。

IPv6は
2^128≒3.403*10^38=???
3の下にゼロが38個もついてしまう、単位がわからないくらい数字が大きい。地球上の全バクテリアにIPアドレスをアドレスを付与してもお釣りが来る。アドレス空間の広さの違いが実感できる。

ウィキペディア
http://ja.wikipedia.org/wiki/IPv6

>n進法は高校の数学Aでも習うので、16進数を扱っても十分理解できると思います。

40年前は中2でやっていたのですから、中学生に教えてもいいくらいです。
時間は60進法と12進法、当たり前すぎて案外気がつかない。
記数法の原理を教えるのは昔のように中2でもかまわない。
少し時間をかけて記数法の原理と世の中で使われている2進法、16進法の二つは使われ方も含めて丁寧に教えておきたいですね。
by ebisu (2014-07-27 17:39) 

コメントを書く

お名前:
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

トラックバック 0