10進数から16進数へ:プログラマが実際に読む短縮表記
この変換でわかること
10進数の数を基数16で書き直します。16進数は別種の数ではなく、同じビット列を短く書くための表記です。16進数の1桁は2進数のちょうど4桁に対応するため、32ビットの値は0と1を32個並べる代わりに8文字で済みます。この圧縮が今も使われ続ける理由です。
AからFという文字が使われる理由
基数16では16種類の数字記号が必要ですが、常用される数字は10種類しかありません。そこでアルファベットの最初の6文字で埋めます。Aは10、Bは11、以下Fが15です。これは略記ではなく桁そのものなので、FFは「15かける16たす15」、つまり255を意味します。
10進数と16進数の対応表
色の指定、アドレス、権限マスクで繰り返し登場する10進数の値と、その16進数表記です。255や65535は1バイト・2バイトの境界を示します。
| 10進数 | 16進数 |
|---|---|
| 0 | 0 |
| 1 | 1 |
| 7 | 7 |
| 8 | 8 |
| 10 | A |
| 15 | F |
| 16 | 10 |
| 31 | 1F |
| 64 | 40 |
| 100 | 64 |
| 127 | 7F |
| 200 | C8 |
| 255 | FF |
| 1000 | 3E8 |
色コードとメモリアドレス
#1E90FFのようなWebの色は、赤・緑・青の3バイトを6桁の16進数で書いたもので、2桁ずつが0から255の1チャンネルに対応します。同じ表記はメモリアドレスでも使われ、0x7FFEは10進数表記より一目で大小を比べられます。桁とバイトの境界がそろうのが16進数の強みです。
大文字と小文字の使い分け
本ツールは大文字で出力します。C言語のソースやデータシート、大半のドキュメントの慣習に合わせたものです。小文字も同じ値として有効で、URLや一部の言語のリテラルでは小文字が使われます。入力欄はどちらも受け付けます。
よくある質問
電卓なしで10進数から16進数へ変換するには?
16で割って余りを16進数の桁として書き、商が0になるまで繰り返してから、桁を最後から順に読みます。255なら255 ÷ 16 = 15 余り 15、15 ÷ 16 = 0 余り 15となり、答えはFFです。9を超える余りはAからFの文字で書きます。
2進数ではなく16進数が使われるのはなぜですか?
2進数の4桁が16進数のちょうど1桁に対応するため、計算なしの置き換えだけで変換できるからです。16進数は同じビット列を人間が読める形に短く書いたもので、デバッガや逆アセンブラ、ネットワークツールがこぞって採用しています。
#RRGGBBの色コードはどう読めばよいですか?
6桁を2桁ずつに分けると、前から赤・緑・青の順に1バイトずつになります。各バイトは0から255の値で、16進数のFFが最大値255、00が最小値0です。#1E90FFなら赤30、緑144、青255となり、青が最も強いことがすぐにわかります。
64ビットの値は何桁になりますか?
16桁です。この桁数は浮動小数点では正確に表せない領域にかかるため、桁数の多い値を扱うと見た目はそれらしいが誤った答えが返ることがあります。本ツールは整数のまま計算するので、その手の取り違えは起こりません。
16進数の大文字と小文字は区別されますか?
されません。FFとffは同じ値で、入力欄はどちらも受け付けます。出力が大文字なのは、多くのソースコードやドキュメント、ハードウェアのマニュアルで使われている慣習に合わせているためです。