プログラミングを学び始めると、10進数のほかに「2進数」「16進数」という言葉が次々と出てきます。色コードの #FF5733、ファイル権限の chmod 755、文字コードの U+3042。これらはすべて、10進数以外の数の表し方です。
一見ややこしそうですが、仕組みは10進数の延長で理解できます。この記事では、進数の考え方の基本から、コンピューターが2進数と16進数を好む理由、手計算での変換方法までを順に見ていきます。
10進数・2進数・8進数・16進数とは
私たちが普段使う10進数は、0から9までの10種類の数字を使い、9の次で桁が繰り上がります。この「使う数字の種類」を基数(きすう)と呼びます。進数の違いは、この基数の違いです。
- 2進数:0と1の2種類。1の次で桁上がり。
- 8進数:0〜7の8種類。
- 10進数:0〜9の10種類。
- 16進数:0〜9とA〜Fの16種類。9の次はA(=10)、Fは15を表す。
たとえば10進数の「10」は、2進数では「1010」、8進数では「12」、16進数では「A」と、同じ量でも表記が変わります。数そのものは同じで、書き方が違うだけです。進数変換ツールを使うと、ひとつの数値を4つの進数で同時に見比べられます。
なぜコンピューターは2進数を使うのか
コンピューターの内部は、電気が「流れる/流れない」という2つの状態で動いています。この2状態を1と0に対応させると、ちょうど2進数で表せます。電子回路との相性がよいため、あらゆるデータは最終的に0と1の並びとして扱われます。
ただし2進数は桁がすぐ長くなります。10進数の255はわずか3桁ですが、2進数では「11111111」と8桁にもなります。人が読み書きするには不便です。そこで登場するのが16進数です。
16進数が「ちょうどいい」理由
16は2の4乗です。この関係から、2進数4桁がちょうど16進数1桁に対応します。区切りがきれいに合うため、2進数と16進数はとても変換しやすいのです。
たとえば2進数の「1111 1111」を4桁ずつ区切ると、それぞれが「F」になり、16進数では「FF」と2桁で書けます。8桁が2桁になり、ぐっと読みやすくなります。色コードの #FFFFFF やメモリアドレス、文字コードで16進数がよく使われるのは、この扱いやすさが理由です。
手計算で変換する方法
仕組みを理解するために、手計算のやり方も知っておくと役立ちます。10進数から他の進数へ変換するときは、基数で割った余りを下から並べます。
例として13を2進数にしてみます。
- 13 ÷ 2 = 6 余り 1
- 6 ÷ 2 = 3 余り 0
- 3 ÷ 2 = 1 余り 1
- 1 ÷ 2 = 0 余り 1
余りを下から読むと「1101」。これが13の2進数表記です。逆に2進数を10進数に戻すときは、各桁に2の累乗(右から1, 2, 4, 8…)を掛けて合計します。「1101」なら 8 + 4 + 0 + 1 で13。考え方を押さえたら、答え合わせや大きな桁の変換は進数変換ツールに任せると確実です。
ビットとバイトの関係
2進数の1桁、つまり0か1のことをビット(bit)と呼びます。そして8ビットをひとまとめにした単位がバイト(byte)です。1バイトは2進数8桁で、表せる数は「00000000」から「11111111」まで。10進数でいうと0〜255の256通りです。
画像の色を「0〜255」で指定するのを見たことがあるかもしれません。あれは1色あたり1バイトを使っているためです。16進数なら00〜FFの2桁でちょうど表せるので、色コードは16進数で書かれます。ビットとバイト、そして16進数がつながっていることがわかると、これらの数字の背景が見えてきます。
8進数とファイル権限
あまり見かけない8進数ですが、いまも現役で使われる場面があります。代表的なのが、Linux・macOSのファイル権限(パーミッション)です。「chmod 755」の755は8進数で、読み(r)・書き(w)・実行(x)の許可をビットで表しています。
- 7 = 2進数「111」 = 読み・書き・実行のすべて許可
- 5 = 2進数「101」 = 読みと実行のみ許可
- 4 = 2進数「100」 = 読みのみ許可
3桁の数字は、左から「所有者」「グループ」「その他のユーザー」への権限を表します。755なら、所有者はすべて可能、それ以外は読みと実行のみ、という意味です。ビットの並びを知っていると、数字だけで権限の設定が読み取れます。
まとめ:進数は書き方の違い
2進数も16進数も、数の量そのものは10進数と変わりません。違うのは基数、つまり使う数字の種類と桁上がりのタイミングだけです。コンピューターは電気の2状態から2進数を使い、それを読みやすくまとめるために16進数を併用します。
仕組みを理解したうえで、実際の変換は進数変換ツールを使えば、大きな桁でも誤差なく確認できます。色コードを扱うときはカラーコード変換ツールも合わせて使うと便利です。