ツール
JA

16進数とは?

16進数(hexadecimal、hex)は、16を基数とする記数法です。0~9とA~Fの16種類の記号で数を表し、Webのカラーコードからメモリアドレスまで、コンピューターの世界でバイナリデータを簡潔に書き表す標準的な方法として使われています。

16進数をひとことで言うと

16進数は基数が16の位取り記数法です。各桁の重みは右隣の桁の16倍で、10~15の値はA~Fのアルファベットで表します。数値が16進数であることを示すために、プログラマーは0x1A(C、Java、JavaScript、Python)、CSSのカラーでは#1A2B3C、アセンブリ言語では1Ah、数学では1A₁₆のように書きます。

0から15までの16進数の対応表

10進数16進数2進数10進数16進数2進数
000000881000
110001991001
22001010A1010
33001111B1011
44010012C1100
55010113D1101
66011014E1110
77011115F1111

16進数の数え方

16進数は10進数と同じように数えますが、9の次ではなくFの次で桁が繰り上がります:… 8、9、A、B、C、D、E、F、10、11 … 19、1A … 1F、20 … FF、100。ここで10は16、100は16 × 16 = 256を意味します。16進数2桁で1バイト(00~FF = 0~255)を表し、4桁ならFFFF = 65,535まで、8桁ならFFFFFFFF = 4,294,967,295まで表せます。

コンピューターで16進数が使われる理由

コンピューターはすべてを2進数で記録していますが、0と1が長く並ぶと人間には読みにくく、入力ミスも起こりがちです。16 = 2⁴なので、16進数の1桁はちょうど4ビット(ニブル)、2桁で1バイトに対応します。16進数と2進数の変換は1桁ずつ置き換えるだけで済み、しかも長さは4分の1です。1101 1110 1010 1101もDEADと書くだけです。10進数と2進数の間にはこのような単純な関係がないため、生のデータを表すのに10進数が使われることはほとんどありません。

16進数と10進数・2進数の変換方法

当サイトの変換ツールなら、これらの計算を瞬時に行い、すべての計算過程を表示します。

16進数が使われている場面

16進数・10進数・8進数・2進数の比較

記数法基数使う数字255の表記主な用途
2進数20–111111111ハードウェア、ビットフラグ
8進数80–7377Unixのファイルパーミッション(chmod 755)
10進数100–9255日常で使う数
16進数160–9、A–FFFバイト、カラー、アドレス、ハッシュ値

16進数での負の数の表し方

16進数そのものには符号を表す特別な記号がないため、負の数は通常2の補数で格納されます。固定長の値の最上位ビットが1なら、その値は負の数です。符号付き1バイトでは7Fは127、80は−128、FFは−1です。32ビット整数ではFFFFFFFFが−1になります。数学や当サイトの計算機では、単にマイナス記号を付けて書くこともできます:−1A = −26。

よくある質問

16進数でアルファベットを使うのはなぜですか?

16進数では1文字で表せる数字が16種類必要ですが、数字は10種類しかありません。そこでA~Fの文字で10~15の値を表します。大文字と小文字は同じ意味で、ff = FF = 255です。

数値の前に付いている0xはどういう意味ですか?

C、C++、Java、JavaScript、Pythonなど多くの言語で、その数値が16進数であることを示します。0x10は10ではなく16です。CSSではカラーに#を使い、アセンブリ言語では末尾にhを付けることがよくあります(10h)。

16進数とBase64は同じですか?

いいえ。16進数は各バイトを0~9とA~Fの2文字で書くため、データ量は2倍になりますが、1バイトずつ読みやすいままです。Base64は64種類の文字を使い、3バイトを4文字にまとめるので、よりコンパクト(増加は約33%)ですが、バイト単位では読めません。

最終更新日: