【コラム】コンピュータの読みにくいは、人間の読みやすい(IPアドレスから考える)

ITコラム

IPv4のIPアドレスは、「192.168.0.1」のように四つの数字でできています。
そして、それぞれの数字は「0 ~ 255」までの256通りの数字で表されます。
なんで四つの数字でできているんでしょうね。
なんで256通りなんでしょうね。
これにはきちんとした理由があります。
私はそれがコンピュータの読みやすいと人間の読みやすいの違いだと考えています。
それでは一緒に見ていきましょう。

10進数 – 人間が読みやすい数字

まずは人間が読みやすい数字から見ていきましょう。
これはそのまま上に書いてある「192.168.0.1」の形、つまり10進数の数字で表されているものです。
小学校の時に習う算数も、中学校、高校と習っていく数学も、10進数表記が前提になっています。
人間に馴染みの深い進数は他にも60進数がありますが、60進数は時計以外に使われていることろを思い出せないですし、やはり一番人間に馴染みがあるのは10進数と言えるでしょう。

2進数 – コンピュータが読みやすい数字

対してコンピュータが読みやすい数字は2進数です。
本当は読みやすいというより、2進数しか扱えない(理解できない)と言った方が正しいのですが、この記事ではあえて読みやすいと表現させて頂こうと思います。

進数とは

例えば10進数は0 ~ 9までの10通りの数字で表現されます。
そして9に1足すと、位が上がって10になるわけです。
時計で利用される60進数なら0 ~ 59までの60通りで、59に1足すと10になります。
時計の場合は、単位をつけた方がわかりやすいですね。
59秒に1秒を足すと、1分0秒になるという感じです。
2進数も一緒です。
2進数は0 ~ 1までの2通りの数字で表現されます。
1に1を足すと、位があがって10になります。
この場合、読み方は「じゅう」ではなくて「いちぜろ」ですね。
何せ2進数の10は、10進数に直すと2なわけですから。
こうして見ると、2と10が入れ乱れてしまって、よくわからなくなりそうですね(笑
他にも2進数に親和性が高い進数として、16進数があります。
16進数は0 ~ 15までの16通りの数字で表現されます。
コンピュータの16進数では、10以上のときアルファベットを使います。
0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,Fという感じです。
Fに1を足すと、位があがり10になります。

なぜIPアドレスは4つの数字でできているのか

冒頭にも書いたようにIPアドレスが4つの数字からできているのは、コンピュータの読みやすいと人間の読みやすいの違いだと考えています。
そして、コンピュータは2進数しか扱えないのでしたね。
でも、10進数で表記されたIPアドレスをコンピュータに設定すると、きちんと与えられた役割を全うして動作します。
ちょっとおかしいですよね。
2進数じゃないのに動作しているので。
でもこの認識は、少しだけ間違っているのです。
この4つの10進数でできたIPアドレスはきちんと2進数なんです。
これはちょっとだけ行き過ぎた表現なのかも知れませんが、その根拠を少しずつ話していきます。

IPアドレスを説明した記事で書いたように、IPv4のIPアドレスは32ビットの数値でできています。
ビットというのは、2進数の一桁の数値のことだと思ってください。
32ビットなら32桁の2進数の数字ということです。
これを四つの10進数で表記するのですから、32を4割ることができると考えられます。
つまり、一つの数字はIPアドレス全体の32ビットのうち、8ビットを表せればいいということです。

なぜIPアドレスは0 ~ 255までの256通りの数字でできているのか

これは単純に8ビットだからです。
と言ったら雑なので、もう少し説明します。
と言っても難しくはありません。
単純に255を2進数に直してみましょう。
すると「11111111」になります。
ちょうど1が8つ並んでいますね。
つまり8ビットで表現できる10進数の最大値が単純に255なのです。

192.168.0.1 を2進数に直してみる

それでは10進数表記のIPアドレスを2進数に直してみましょう。
それぞれを2進数に直すと以下のようになります。
 192 – 11000000
 168 – 10101000
 0 – 00000000
 1 – 00000001
そしてそれぞれを結合します。
 11000000101010000000000000000001

これが実際にコンピュータが認識しているIPアドレスの正体なんですね。
でも、私たち人間はこの数字をいきなり見せられても、何が何だかよくわかりませんよね。
だから人間が見てわかりやすいように、2進数に変換しやすい4つの10進数を使ってIPアドレスを表記して、それを2進数に変換しているわけですね。

おまけ 2進数と親和性が高い16進数

途中で書きましたが、16進数は2進数と親和性が高いです。
それがどういうことか少し話をしようと思います。
16進数は1 ~ Fの16通りの数字で表せるのでした。
ここで、16進数のFを2進数に直してみましょう。
 1111

そうです。
16進数の1桁は、2進数の4桁で表現ができるのです。
では、次に16進数のFFを2進数に直してみましょう。
 11111111

なんとなくわかりますかね。
16進数を2進数に直すのも、2進数を16進数に直すのも、あまり難しい計算を必要としないんです。
これが16進数が2進数と親和性が高いという理由です。

まとめ

コンピュータは2進数しか扱えません。
でも2進数で表記されるのは、コンピュータの内部だけに留めておかなければ、人間から見ると理解できない状態になります。
そのためにコンピュータは数字を10進数に変換したり、文字に変換したりして私たちに情報を見せてくれます。
コンピュータを利用する私たちのために、自分の扱えない情報を扱えるよう、一生懸命翻訳してその優秀さを遺憾無く発揮してくれていると言えます。
そう考えると少しだけ愛着が湧いてきますね。

それでは〜。

コメント

タイトルとURLをコピーしました