数の表記法を変える
公開日
2016年3月30日
更新日
2016年3月30日
数の表記法で世の中を変える!?
私たちの日常で大いに活躍しているコンピューター。その能力は、人間の数倍もの能力を誇ると言われていますが、どのような背景からきたものなのでしょうか。
その根源を辿ると、それは数の表記方法なのです。私たち人間は、指で数字を自然と数えるよう都合よく10本※、言うなれば「10進法」という考え方で数を認識しています。(※諸説があります)
昔の偉い人は、そんなに数を使うまでもないと、数を10から2に減らし、2進法というアイディアをもってコンピューターを発明しました。日常で大いに活躍している現在のコンピューターやバーコードなどにも2進法が使われています。
2進法は「ONとOFF」で電気回路の作成が簡単、「真(True)または偽」であいまいな事柄を排除できるという説明がされているのをよくみます。
しかし、場合によっては次のような事も想定されます。電気はプラスとマイナスがあるのだから、0「ゼロ」も加えた3進法が妥当なんじゃないの?ということも考えられなくはない事実です。
数の表記にはいくらあれば事足りるのだろうか?実は、答えとしては2や3に近いというのが正しい認識なのですが・・・いきなりされてもよく分からない方のために、まずは2進法、3進法等の基本的な話から順に追って解説しましょう。
1)2進法、3進法・・・って何ですか?
まず、私たちが普段何気なく使っている数(0、1、2、3、・・・)は10進法という考え方のもとで使っています。つまり、10進法は0〜9を使った数字のことです。
これに対して、2進法は、0と1のみで10進法の数字を表して、2になったら位を上げ、さらに2が2個出てきたら位をあげる数字の書き方のことです。
例えば、17までの数を2進法で表すと、以下のようになります。
10進法 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
2進法 | 0 | 1 | 10 | 11 | 100 | 101 | 110 | 111 | 1000 |
10進法 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 |
2進法 | 1001 | 1010 | 1011 | 1100 | 1101 | 1110 | 1111 | 10000 | 10001 |
また、進法による表現を区別するために、小さいかっこをつけて次のようにも表します。
例 10(2)=1×2+0×1=2、111(2)=1×4+1×2+1×1=7、
1011(2)=1×8+0×4+1×2+1×1=11
この方法に基づいて、すべての10進数を2進数に直す考え方が、2進法の考え方なのです。新しい数字を使うことはありません。
3進法では、0、1、2の3つの数を用いて、3になったら1つ位があがる数字の書き方です。5進法では、0、1、2、3、4の5つの数を用いて、5になったら1つ位があがる数字の書き方です。2進法と同じように、例をだしましょう。
例 10(3)=1×3+0×1=3、122(3)=1×9+2×3+2×1=17
342(5)=3×25+4×5+2×1=96
ここで、唐突に出てきている9や25はどういった意味なのでしょうか。
2進法では、2の累乗(1,2,4,8,16,32,・・・)、3進法では、3の累乗(1,3,9,27,81,・・・)
5進法では、5の累乗(1,5,25,125,…)を用いて表しています。
これが、数の表す正体だったんですね。
2)12進法、16進法という大きい表し方では文字を使う!
2、3、5進法の考え方を元にして、それよりも多くの数字を使う場合、例えば12進法、16進法ではどのように数字を表すのでしょうか?
12進法では12個の文字、16進法では16個の文字が当然必要となります。この場合、1つの文字で10や11といった二桁の数を表さなければならないものも出てきます。このため、0〜9に加え、10以上の数はアルファベットであるA,B,C,・・・を用いて表すことにしています。
つまり、数字をアルファベットを加えれば36進法まで表すことができます。
例 1A(12)=1×12+10×1=22、4D(16)=4×16+13×1=77
ちなみに、16進法はコンピューターの分野でも2進法と同じように用いられることが多く、データのビット、オクテット単位として表すことが多いです。
ゲームのデータを書き換えるときは、この16進法で使われる文字列を書き換えることで、設定を変更したり、任意にパラメーターを変えることができます(いわゆるチートプレイというものですね)。
では、数の多い記法には他にどのようなものがあるのでしょうか。それは、紀元前3000〜2000年前頃のバビロニアまでに遡ると言われています。バビロニア数字を用いた60進法というものがあります。しかし、こんなに数が大きいと数を表すのも大変なのがわかりますよね。
(参照:wikipedia バビロニア数学)
3)2進法の数学的な根拠
2進法は、他の進法に比べて数学的に役にたつという根拠があります。
たとえば、「点灯するか点灯しないか」の2つの状態しか表せない信号機(点滅は考えない)があるとします。
このとき、1000までの数を2進法、3進法、5進法、10進法で表した場合に必要な信号機の個数がいくつになるかを考えると、2進法では10個、3進法では14個、5進法では21個、10進法では28個の信号機が最低でも必要であることがわかります。
2進法では、
1000=1×0+2×0+4×0+8×1+16×1+32×1+64×1+128×1+256×1+512×1
(1~512の計10個必要)
3進法では、
1000=1×1+2×0+3×0+6×0+9×0+18×0+27×1+54×0+81×0+162×0+
243×1+486×0+729×1
(1~512の計14個必要)
と表していくため(5,10進法についても同様)。
一般にn進法である整数Lを表すために必要なm桁とした場合の関係式はL=nmとなり、このときに必要な信号機の最小個数はnm個であることが分かります。つまり、「Lが一定のとき、このnmが最小となる場合のnは何か?」というのが数学としての問題解釈となります。
これは、微分法を用いて計算するとn=2.7182818・・・で最小となり、約2進法若しくは3進法が良いということが導けます。したがって、今回の冒頭にあった3進法の妥当性はこの説明から導くことができました。
いかがでしたでしょうか?
2進法や3進法を例にとった内容の話をさせていただきました。とはいえ、現状よく利用されているのは2進法なわけですから、究極を言ってしまえば「人間の頭脳もコンピューターと同じように2進法にすればよい」ということが考えられますね。
私たちが普段使っているのは10進法であるため、コンピューターはコンピューターで2進法を使えばいいし、私たちは私たちで10進法を使えば良いと考えれば今のところ困ることは何もありません。
2や10に絶対的な根拠はないのですが、今回のように数学の見方を持っているだけで、2進法って結構便利なんだな〜という考え方が見えてきますね(説明が冗長だったので難しく見えたかもしれませんが(⌒-⌒; )
不思議だな〜と思う事実を数学的な視点でみると、とても役立つことがわかって面白いな〜と思えるようになります(突発的に思いつくのは大変ですが。。。)。