なんで数学なのに「にしん」の話が・・・
えっと、にしんではなく二進数の話をしたいとおもいます。
口癖としてはあまり言ったことはないつもりなのですが、書き癖というんでしょうか、
「えっと」と「とりあえず」というのを多発します。
私の送信するメールでこれらの単語を検索するとほとんどのメールがひっかかるんじゃないかと思います。
で、そんなことはどうでもいいんですが
話は戻して
二進数のお話。
今回は実際に使われている場面というよりは、二進数というのはなんのかというのが分かるようにしたいと考えています。
もちろん実際に使われている例も出して説明したいと思っていますがそれだけじゃないってことです。
点字というのはご存じでしょう。読めないにしても存在は知っていると思います。
そう目の不自由な方が手で触って読むことが出来る文字のことです。
たとえば、点字で「あ」を表す文字は
●□
□□
□□
となります。(□は空白を意味しています)
母音を並べると
あ い う え お
●□ ●□ ●● ●● □●
□□ ●□ □□ ●□ ●□
□□ □□ □□ □□ □□
となります。
これを左上から、横に順に、上から下の順にならべるなおすと
あ ●□□□□□
い ●□●□□□
う ●●□□□□
え ●●●□□□
お □●●□□□
という風になりますね。
●のところを1に□のところを0にして書き直すと
あ 100000
い 101000
う 110000
え 111000
お 011000
となります。
さて、当然50音が有りますからこれ以外の組み合わせもいろいろあるんですが
それはおいといて、みんな最後の3つは空白ですよね。
そこで最初の3つだけ取り出すと
あ 100
い 101
う 110
え 111
お 011
さて、3つの1,0の組み合わせでこれ意外にはどんな組み合わせがあるでしょうか?
ちょっと考えていただければすぐ分かると思いますが
000
010
001
の三つだけが残っています。
つまり0,1を三つならべる方法は全部で8通りあるわけです。
これらの記号は点字としては存在するのでしょうか?
当然000つまり全部0の場合は空白になります。
010000はかならず他の文字の前につけて、拗音(きゃ、きゅ、きょなど)の記号で
001000は何かの文字の後にかならず続く形で促音「っ」の記号になります。
これら1点の符号だと、単体で存在すると、「あ」と区別しにくいからなのでしょう。
さて、ここまで延々と点字の説明をしてきましたが、なぜこんな説明をしているかというと
この点字の考え方、つまり、文字を点の並びで表現するという考え方が
二進数そのものなのです。
0 000
1 001
2 010
3 011
4 100
5 101
6 110
7 111
したがって、この数字を先ほどのルールに基づいて点字に戻すと
点字の「あ」は4 「い」は5 「う」は6 「え」は7 「お」は3、空白は0、拗音は2、促音は1
という風に成ります。
つまり、二進数というのは、点の並びで数を表現する方法だったのです。
もちろん、点字とは違って数ですから計算が出来ないと不便です。
そのためちゃんと並びに意味がついています。(説明の為に位置を桁と呼ぶことにします。)
一番右が1桁目、そこから順に左に向かって2桁目、3桁目と数えることにします。
では、この二進数で計算をしてみましょう。
まず簡単なところから、1足す1は?
当然普通は2ですが、点には種類が無いので、一つの点では2は表現できません。
どうしましょう。記号が0と1しかないんですから、仕方がありません。
5と5を足したとき、9より大きくなって困ったとき、仕方がないから上の桁に繰り上がりしたのをまねして繰り上がりするようにしてみましょう。
つまり、1と1を足すと10となることにするんです。
この規則を一つつくるだけで、二進数の計算はすべて出来てしまいます。
たとえば5と3を足してみましょう。
5は101、3は011でしたから
101と011を足すことになります。
小学校で習ったとおり、下の桁から順番に足していくと
まず、1桁目は1と1ですから、さっきのルールで10 一桁目は0
二桁目は0と1ですが、さっきの繰り上がりがあるから、やっぱり10 二桁目も0
3桁目は1と0ですが、やっぱりまた繰り上がりがあるから、また10 三桁目も0
そして、4桁目になって、三桁目からの繰り上がりの1だけがのこって、 4桁目は1
つまり、1000となるわけです。
さて、3+5は8ですね、
上の例では7までしか書いていませんでしたが、8は1000となります。
答えが一致しましたね。
つまり二進数で表しても同じように計算ができて、ちゃんと答えが一致します。
さて、では10進数ではなくなぜ2進数を使う必要があるのでしょうか。
それはルールが簡単だからです。
10進数の計算をすることを考えると、3+7でも、2+8でも5+5でも全部繰り上がりが発生します。
1桁の足し算の表を作ってみればわかりますが、結局10*10通りの結果を必要とします。
(もちろん大人はそんなことはせず、自然に計算ができますが、小学1年生をみれば分かりますが結局すべての組み合わせを苦労して覚えています。うちの1年生がバカなだけかもしれませんが・・・)
ところが、二進数では、ルールは簡単です。
0+0=0、1+0=1、0+1=1、1+1=0と繰り上がりの1
という4つのルールで決まるのです。
これ以上のルールは必要有りません。
どうです?、簡単でしょ?
これなら小学生も簡単に覚えられるのではないでしょうか。
また、かけ算になるともっと簡単です。
1×1=1だけができればいいんです。
他は全部0になります。
実際にやってみましょう。
たとえば、3×5 当然15ですね。
2進数では 011×101
ちょっと文章で書くと長くなりすぎるので筆算でやってみます。
011
× 101
------
011 上の011に下の一桁目の1をかけて
000 上の011に下の2桁目の0をかけて
011
-------
1111 上から順番に足していくと
1111というのは、1000+111で、8+7ですからちゃんと15になっています。
ほら簡単でしょ?
これなら1年生にだって簡単に覚えられるんじゃないでしょうか。
九九に苦労する必要も有りません。あえて言うなら一一でしょうか、
さあご一緒に「いんいちがいち」、あ、終わってしまった。
今すぐすべての数を二進数に統一しましょう。・・・(^^)
では、二進数がすべてにおいてわかりやすいかというと、表現するのに必要な桁数が膨大に増えるのです。
10進数に比べると約3倍以上の桁数を必要とします。(正確には3.32・・・倍です)
パソコン98,000円というのが 10,111,111,011,010,000円となってしまって
何がなにやら、毎日国家予算並の桁数を数えなければなりません。
これだけ長いと点を打っても全然わけがわかりませんね。
もし二進数で国家予算を表すとどうなってしまうでしょう。
平成16年度予算が821,109億でしたから
10進数で表せば、82,110,900,000,000 これでも桁を数えないと訳が分からないのに二進数で表すと10,010,101,010,110,111,101,111,000,001,101,101,010,100,000,000
・・・なんでしょこれ・・・ほとんど何かの模様となってしまいますね。
やっぱり10進数の方が幸せですね。 九九くらいなら我慢しましょう。
でも逆にコンピュータにとってみれば、桁数なんて、多くてもたいしたことありません。
彼らは単純作業を繰り返すのは大変得意なのです。
それより、難しい判断をしたり、条件がたくさんあることを考える方がよほど大変なんです。
だから、コンピュータでは2進数が使われる?・・・
うーん、もっと大元の理由があるような気が・・・
閑話休題
アメリカの貨幣単位はドルでその100分の1がセントというのはご存じでしょう。
ではイギリスの貨幣単位はご存じでしょうか、ユーロというのは間違いで、今でもポンドを使っています。
ポンドの補助単位はペンスで1ポンドが100ペンスとなります。
がしかし、ほんのつい最近1971年までイギリスの貨幣単位は
1ポンド=20シリング
1シリング=12ペンス
つまり、1ポンドが240ペンスです、
それ以外に
1ギニー=21シリング
1ポンド=4クラウン
などという単位も有ったのだそうです。
もうわけがわかりませんね。
ハリーポッターを読むと、魔法の世界のわけの分からないの貨幣単位が出てきますが、これは昔のイギリスの貨幣単位を皮肉ったものだったのですね。
まぁ日本でも、江戸時代まで1両は4分、1分は4朱、文(銭)については変動相場・・・いくらになるか決まってない?
という状況でしたからあまりかわるわけじゃないんですが
しかし、いまだにインチだの、フィートだの、ポンドだの・・・変な単位系を使い続けているアメリカにはかなわないかもしれないですけど
次回8進数、16進数のお話をちょっとかじってから、ビット、バイトなどの話に進みたいと思います。