FE EXAM

16進数(コンピュータで最もよく使う表記)

16進2桁の各位を「+」「−」で変えると、10進数と2進8ビットがリアルタイムに連動。「2進数4桁=16進数1桁」の対応で長い2進数を半分の桁数で扱える仕組みを学びます。

INTERACTIVE VISUALIZATION
16進数の桁
2進4ビットの組
10進数
170
16進数
0xAA
2進数(4桁ずつ区切り)
1010 1010
10進値スライダー170
0255
プリセット
各桁の「+」「−」で0〜Fの値を変えると、下の2進4ビットが連動します。10以降はA, B, C, D, E, Fと表記される点に注意してください。
16の位 (161=16)
A
A = 1010
1
0
1
0
8421
1の位 (160=1)
A
A = 1010
1
0
1
0
8421
計算式
16×10 + 1×10=170
解説

📌
16進数とは

16進数は16種類の記号を使う0123456789ABCDEF09101510進数の10〜15を「A〜F」と書く

16進数とは、0〜9とA〜Fの16種類の記号で数を表す方法です。10進数では「9の次は10」ですが、16進数では 「9の次がA、その次がB、…F、その次が10」になります。

各桁の重み16のべき乗です。右から順に 1, 16, 256, 4096, ... となります。
・16進数の A = 10(10進)
・16進数の FF = 16×15 + 1×15 = 255(10進、2桁の最大)
・プログラム中では 0x や末尾の H を付けて区別(例:0xFF / FFH

上のツールでプリセット「10」「15」「16」を順に選んでみてください。10進10は16進ではちょうど「A」、10進15は「F」、10進16は桁上がりして「10」(16進)になります。

📌
A〜Fが表す値と2進4桁との対応

16進数のもう一つの特徴は、2進数4桁=16進数1桁という対応関係があることです。2進数4桁で表せる組み合わせは 2⁴ = 16通り、ちょうど16進数1桁の数(0〜F)と一致するためです。

16進10進2進4桁
000000
110001
220010
330011
440100
550101
660110
770111
881000
991001
A101010
B111011
C121100
D131101
E141110
F151111

この対応のおかげで、2進数↔16進数の変換は「4桁ずつ区切って読むだけ」で可能です。たとえば 10101010 を右から4桁ずつ区切ると 1010 1010、それぞれA, Aなので AA(16進)です。

上のツールでプリセット「170」を選ぶと、まさにこのAA1010 1010のパターンが見られます。16進1桁を1つ動かすたびに2進4ビットがガラッと変わる連動を確かめてください。

📌
メモリアドレス表記での使われ方

同じ値の表記比較2進数11111111 (8桁)10進数255 (3桁)16進数FF (たった2桁!)16進数は「2進数の桁数を1/4に圧縮」できる

16進数が実務でこれほど広く使われる理由は、2進数の桁数を1/4に圧縮できるためです。8ビットの2進数 11111111 を「FF」と書けば、人間にとってずっと読みやすくなります。

身近な例で見ると、16進数は次のような場面で登場します。
メモリアドレス0x7FFE4A20 のように表記
カラーコード:CSS の #FF0000(赤)は R=FF, G=00, B=00
MACアドレスAC:DE:48:00:11:22
ASCIIコード表:「A」は 0x41、「a」は 0x61

16進数 ↔ 10進数16進数 ↔ 2進数の変換はよく使います。特に「2進数 → 16進数は4桁ずつ区切る」というルールを身につけておくと、桁数が多くても素早く処理できるようになります。

📌
なぜ16進数を使うのか — 2進数との相性

同じ値「255」を3つの表記で比べる2進数11111111(8桁必要)10進数255(3桁 / 2進数との変換が大変)16進数FF(たった2桁! かつ2進数と1対1で変換できる)

16進数を使う最大の理由は「短く書けて、しかも2進数と簡単に変換できる」ことです。コンピュータは内部で2進数を使っていますが、2進数は桁数が多くて人間には読みにくい。10進数は読みやすいけれど2進数との変換が面倒。16進数はその両方の問題を一気に解決します。

なぜ2進数との変換が簡単なのか。それは 16 = 2の4乗だからです。2進数4桁(例: 1111)で表せる種類がちょうど16通り(0〜15)あり、16進数1桁と完全に一致します。つまり2進数4桁と16進数1桁は1対1で対応していて、機械的に置き換えるだけで変換できます。
・2進数4桁 0000 ↔ 16進 0
・2進数4桁 1010 ↔ 16進 A(10)
・2進数4桁 1111 ↔ 16進 F(15)

これを実感するには、上のツールでどちらかの桁を変えてみてください。16進1桁を変えると対応する2進4ビットだけがガラッと変わり、もう片方の桁は全くそのままです。これが「4桁単位で独立して変換できる」証拠です。

📌
2進数↔16進数の変換手順を身につける

2進数 → 16進数: 4桁ずつ区切って置き換える10101010AA= AA16進数 → 2進数: 1桁を4ビットに展開するB510110101= B(11) 5(5)B=11=1011, 5=5=0101 → 10110101

2進数 → 16進数の変換手順は3ステップだけです。
2進数を右から4桁ずつ区切る(左端が4桁に足りなければ 0 を補う)
各グループを16進数1桁に置き換える(上の変換表が使える)
並べると16進数の完成

16進数 → 2進数の変換は逆の操作です。16進数の各桁を4ビットの2進数に展開して、そのまま並べるだけです。例えば B5 なら B=1011、5=0101 なので 10110101 です。

10進数との変換は少し手間がかかります。「10進数 → 16進数」は16で割り続けて余りを逆から読む(割り算法)、「16進数 → 10進数」は各桁×16のべき乗を足す(重み計算)で求めます。上のツールの計算式パネルが重み計算を視覚的に表示してくれますので、いろいろな数で試してみてください。

関連コンテンツ