6️⃣

16進数が使われる理由(カラーコード/文字コード/UUID など)

2024/08/04に公開

導入

コンピュータは2進数しか分かりません。
コンピュータが2進数を使う理由については以下をご確認ください。
https://zenn.dev/417yr/articles/c6b0dce4804874

それに対して私たちは普段

  • 10進数の数値
  • 文字

  • などを扱います。

10進数の数値の場合は、
10進数と2進数を相互に変換することでコンピュータで扱えるようになったと説明しました。
詳しくは以下をご確認ください。
https://zenn.dev/417yr/articles/6b37e09679393e

ということは、同じようにコンピュータで文字/色なども扱えるようにするには
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進数の方が桁数が短いので、私たちが扱う際に以下のようなメリットがあると考えられます。

  • 入力ミスが起こりにくい
  • 認識しやすい
  • 覚えやすい

参考

https://nozomi-school.jp/it-62/

https://www.econ.niigata-u.ac.jp/~nagai/gairon_d/2and16.pdf

https://prau-ict.com/digitalize/about-hexadecimal/#toc9

Discussion