ヒトが使う数、コンピュータが使う数【進数】

進数


「数」は人間だけが持ち得る概念です。人間だけが数を扱うことができ、理解することができます。

では、コンピュータはどうなのでしょうか?

コンピュータは人間のように数について理解したり思考したりすることはできません。しかし、数を扱うことは可能です。

この記事では人間が日常生活で使う数コンピュータ扱う数について解説していきます。

ヒトが使う数


わたしたち人間が日常生活で使う数として、主に10進数60進数を挙げることができます。これらの数はコンピュータにも扱うことができますが、そのためには工夫が必要です。

ここではひとまず、10進数と60進数についての知識をおさらいしていくことにしましょう。

10進数


言うまでもないことかもしれませんが、以下の文字は読者の皆様にとって大変馴染み深いものだと思います。というより日常においてなくてはならない存在でしょう。

0 、1、2、3、4、5、6、7、8、9


そうです。

これら10個のアラビア数字による記数法、これこそが10進数なのです。これはわたしたち人間に最も利用されている記数法ですから、これ以上の説明は不要かもしれません。

ここで10進数について触れたのは、基数変換に必要だからです。

基数変換というのは計算によって基数を変えることをいいます。ここではひとまず数の表記を変えることと捉えていただいて構いません。

基数変換はコンピュータが数を扱う上で必要な工夫のひとつだといえます。10進数を2進数にすることで、はじめてコンピュータが数を扱うことができるのです。

10(10) → 1010(2)


基数変換についてはこちらの記事に詳しくまとめてありますから、ぜひ読んでみてください。

60進数


角度時刻などを表現するために利用される記数法を60進数といいます。この記数法では60で桁が上がります。

60進数の桁上がりのイメージとしては時刻をイメージしていただくと分かりやすいと思います。

たとえば、

0:59 → 1:00


といった具合です。

ご覧のとおり0時59分(59)から
1時00分(60、つまり「100」)になり、
1時00分を回ったところで再び
00分01分02分、……
と時を刻んでいきます。

これはまさしく60進数そのものだといえます。


ところで、「60」という数には約数10個あります。

2、3、4、5、6、10、12、15、20、30


さらに、ここに160を加えると12個の約数が存在することになります。これは「60」という数が計算する上で扱いやすい数であることを示す上でとても重要なことでしょう。しかし、これは今ひとつピンと来ないことでもあります。

60進数の便利さはちょうど2で割り切れる数(偶数)に対するイメージと同じだといえます。偶数は2で割り切ることができますが、60は先に挙げた12個の約数によって割り切ることが可能です。

もっとも、割り切れる数が多いためか偶数ほどスッキリとしたイメージを持てないかもしれません。ただ、約数が多いという性質のために古代から現代まで使い続けられている数であることには間違いのない事実でしょう。

コンピュータが使う数


一方、情報通信のために技術的な要請で作られた数も存在します。それが2進数です。

ただし、2進数をありのままに扱うにはあまりに煩雑です。そのため、8進数や16進数が登場することになります。

ここでは8進数16進数を中心に詳しくまとめていきます。2進数についても触れますが、別記事を参照していただくと一層理解に繋がりますので、そちらも是非読んでみてください(リンクは後ほど)。

2進数


2進数素子の状態を表現することに適しています。素子というのは、一言にするなら最小単位をあらわすための部品のことです。コンピュータを成立させる最小単位だともいえそうですね。

2進数や素子ついては別の記事で詳しく説明していますから、ぜひあわせて読んでいただけると嬉しいです。

2進数についてはこちら

素子についてはこちらです。


8進数


ところが、2進数では桁数が大きくなってしまい人間が扱うには煩雑になってしまいます。そこで2進数をコンパクトに扱うために8進数が登場しました。

8進数で使用する数は以下の通りです。

0 、1、2、3、4、5、6、7


そして、8進数は「8」で桁上がりをします。

0 、1、2、3、4、5、6、7、
10、11、12、13、14、15、16、17、
20、21、22、………


8進数は、後ほど説明する16進数とは異なり10進数で用いる数字の範囲内で表記できるという特長がありますが、現在は滅多に使われません。

16進数


2進数をよりコンパクトにするための考え方として16進数があります。こちらは10進数で用いる数字の範囲では表記ができません。

そこで、

0、1、2、3、4、5、6、7、8、9、
A、B、C、D、E、F


………といった具合に、10以上の数には”A”~”F”のラテン文字(アルファベット)をあてます。アルファベットは大文字でも小文字でも構いません。

そして、桁上がりのタイミングは「16」です。

0、1、2、3、4、5、6、7、8、9、
A、B、C、D、E、F、
10、11、12、13、14、15、16、17、
18、19、1A、1B、1C、1D、1E、1F、
20、21、22、23、24、25、26、27、
28、29、2A、2B、2C、2D、………


アラビア数字(0~9の数字のこと)だけでは表記しきれない16進数ですが、表記法としてはとても優秀だといえるでしょう。

たとえば8ビット値(つまり1バイト分)の最大値である255を表記するにあたり、8進数では「377」、16進数では「FF」となります。

前者の8進数の場合はいささか煩雑な印象を受けます。それに一見して何の数であるのかが分かりません。「377」が8進数であるといわれても中々ピンと来ないでしょう。

一方、後者の16進数の場合は8進数と比較してとてもシンプルだといえます。8進数とくらべて桁数が小さく、(その道の人間なら)一見して「FF」がどのような数であるかを判断できるからです。


ちなみに、16進数は現在でも使われています(というより、現在もなくてはならない存在だったりします)。

主な用途としてプログラミングはもちろん、色を表現するカラーコードにも利用されます。インターネットの住所ともいえるIPアドレスも16進数で表記されますし、メモリの番地についても同様です。

2進数と10進数の「相性」は良くない!


2進数と10進数とでは数の性質上相性が良くありません。これは8進数と16進数についても同じです。

というのも、2と10とでは素因数が異なるからです(素因数というのはその数を構成する数のこと)。

2は素数のためそのままとして、ここでは816の素因数について見てみましょう。

8 = 2 × 2 × 2

16 = 2 × 2 × 2 × 2


つまり、8と16は「2のみ」を複数回かけ算して構成される数というわけです。

一方、10はというと、

10 = 2 × 5


となり、2とは異なる素数である「5」が含まれることが分かります。

これはすべて「2のみ」で構成されていないことを意味します。つまり「2進数8進数16進数」と「10進数」とでは「異質な5」によりお互いキリの悪い数になってしまっているわけです。

「キリのいい」数とは?


ところで、オーストラリアやアフリカなどの未開地では5進数を使うことがあるようです。そしてフランスのように20進数を基本とする地域もあります。

このことから人間の指の本数が人間自身にとってはキリのいい扱いやすい数だといえそうです。「5」も「10」もヒトの手指の本数と同じですからね(ちなみに「20」は両手両足の指の総数ですね)。

キリがよくて扱いやすい数を持っている。これはコンピュータにとっても同じことがいえます。

電気回路のONとOFF、かかる電圧の高低、ディスクの磁気状態のNとS……

コンピュータにとっては2進数がもっともキリのいい扱いやすい数です。現に2進数を基にした原理で動作しているのですから。

進数の対応表でイメージをつかむ


最後に進数の対応表を載せて記事を終わりにします。これを見れば桁上がりのタイミングと各進数の相互関係について視覚的に把握することができるでしょう。

基数対応表
左から10進数、2進数、8進数、16進数





それでは、今回はここまでといたします。
最後までお読みいただきありがとうございます。


進数
最新情報をチェックしよう!