16進数が使われる理由(カラーコード/文字コード/UUID など)
導入
コンピュータは2進数しか分かりません。
コンピュータが2進数を使う理由については以下をご確認ください。
それに対して私たちは普段
- 10進数の数値
- 文字
- 色
などを扱います。
10進数の数値の場合は、
10進数と2進数を相互に変換することでコンピュータで扱えるようになったと説明しました。
詳しくは以下をご確認ください。
ということは、同じようにコンピュータで文字/色なども扱えるようにするには
2進数と対応させればよい、ということがわかります。
コンピュータは結局2進数しか認識できないんだから、
文字/色などは私たちが2進数で入力すれば変換する必要がなくなって良いじゃないか、と思われるかもしれませんが、
2進数は桁が長いので以下の弊害が考えられます。
- 入力ミスが発生しやすくなる
- 認識しづらい
- 覚えづらい
よって、以下の図のピンクの枠の中、
つまり人間が何を用いるかが問題となります。
そこで使われるようになったのが16進数です。
16進数が使われるメリット
- コンピュータ側
- 2進数との相性が良い(対応表が16行で済む)
- 人間側
- 桁が短く済む
- 入力ミスが起こりにくい
- 認識しやすい
- 覚えやすい
- 桁が短く済む
コンピュータ側のメリット
- 2進数との相性が良い
コンピュータにとって10進数よりも、16進数の方が相性が良いようです。
2進数と10進数には関連性がないので、大量にマッピングする必要があります。
(対応表の行数が多く必要になるイメージ)
【2進数↔︎10進数】
【2進数↔︎16進数】
それに対して、2進数と16進数には、
4桁の2進数と、1桁の16進数が対応している、という関連性があります。
2進数 | 16進数 |
---|---|
0000 | 0 |
0001 | 1 |
0010 | 2 |
0011 | 3 |
0100 | 4 |
0101 | 5 |
0110 | 6 |
0111 | 7 |
1000 | 8 |
1001 | 9 |
1010 | A |
1011 | B |
1100 | C |
1101 | D |
1110 | E |
1111 | F |
例えば、2進数の「101100110100」は、
16進数の「B34」に対応しています。
たった上記表の16行だけで変換できてしまいます。
人間側のメリット
色を表現するカラーコードを例に説明します。
コンピュータは当然色も2進数で理解しています。
カラーコードは、私たちが設定画面からテーマカラーなどを指定する際に入力したりします。
2進数:1000011001011011110011
16進数:2196F3
上記は同じ色を表現していますが、
16進数の方が桁数が短いので、私たちが扱う際に以下のようなメリットがあると考えられます。
- 入力ミスが起こりにくい
- 認識しやすい
- 覚えやすい
参考
Discussion