数学の小ネタ#10 ○進数
我々が普段使っている算法は、十進法が基本です。使われる数字は0から9までの10種類なので、十進数といわれます。十進法では、十を表わす1文字の数字はありません。これは二進数や八進数でも同様です。二進数には二を表わす1文字の数字はありませんし、八進数には八を表わす1文字の数字は使われません。二進数での2は10ですし、八進数の8も同じく10です。ただし厳密には右下に添え字として(2)や(8)を付けるのがルールです。
〇進法の数字を×進法の数字に変換する問題は、公務員試験の『数的推理』でよく出ます。十進法が10のべき乗を使った位取りが基本であることをしっかりと理解できていれば、〇進法から×進法への変換は難しくありません。私が博士課程の学生の時には、アルバイトで公務員養成コースの講師をしていました。その時には、十進数から二進数への変換や、その逆変換などを数的推理の授業で教えていました。
数的推理は、数学パズルのような問題が多いのですが、その中には『魔法陣』の問題が結構出ます。魔法陣は学校の授業で出ることは無いので、はじめて見た時には戸惑いました。しかし、魔法陣には”決まった解き方”があって、これを覚えてしまえば解くのは簡単です。
ほぼ同じ頃、コンピュータを使った測定制御プログラムを作り始めた時に、それまでに出会わなかった十六進数に出会いました。それまでに、二進数から十進数までしか知らなかったので、十を超える〇進数には驚きました。十六進数では16種類の数字が必要ですが、数字は0から9までの十種類しかありません。そこで、9の次の10を表わす数字にはアルファベットのAを、11にはB、12にはC、13にはD、14にはE、15にはFを充てています。もちろん16を表わす一文字は無いので、16は十六進数では10となります。
どうしてこんな変な数字が使われるのかというと、それは実用性のためです。コンピュータが理解できるのは0と1を使った二進数ですが、大きな数を二進数で表わすと桁数が長くなってしまいます。例えば十進数の512は3桁の数字ですが、これを二進数にすると100000000となり、9桁の数になってしまいます。
そこで使われるようになったのが、十六進数です。十六進数では1文字で4ビット分(2の4乗=16)が表せますから、大きな数字の桁数を減らすことができます。十進数で9桁の100000000(1億)は、十六進数では”5F5E100”と7桁の数字になります。一般的には十六進数を使う機会は殆どありませんが、ハードウェアを制御するプログラムでは良く出てきます。
FFFFが65535だと脳内ですぐに変換できれば、エキスパートの仲間入りです。