コンピューターの世界では2進数と16進数はセットで使われることが多く、両者の変換は基本中の基本スキルです。
16進数から2進数への変換は、実は非常にシンプルな規則に基づいており、一度コツをつかめば素早く変換できるようになります。
特に「16進数1桁=2進数4桁(4ビット)」という対応関係を覚えることが変換の鍵です。
本記事では、16進数から2進数への変換方法・変換表の見方・デジタル回路での活用まで、わかりやすく解説していきます。
16進数から2進数への変換の基本ルール
それではまず、16進数から2進数への変換の基本ルールについて解説していきます。
16進数から2進数への変換の基本は、16進数の各桁を4ビットの2進数に個別に置き換えるというシンプルな手順です。
16進数の1桁は0〜15の値を表し、これはちょうど4ビット(0000〜1111)で表現できる範囲と一致します。
そのため、16進数の各桁を独立して4ビットの2進数に変換し、それを並べるだけで全体の変換が完了するのです。
16進数1桁と4ビット2進数の完全対応表
0=0000 1=0001 2=0010 3=0011
4=0100 5=0101 6=0110 7=0111
8=1000 9=1001 A=1010 B=1011
C=1100 D=1101 E=1110 F=1111
この対応表を覚えておけば、どんな桁数の16進数でも機械的に2進数へ変換することができます。
変換表は16種類しかないため、繰り返し使ううちに自然と暗記できるようになるでしょう。
なぜ16進数1桁が4ビットに対応するのか
16進数1桁が4ビットに対応する理由は、数学的に明快です。
2の4乗(2^4)は16であり、4ビットで表現できる値の種類はちょうど16通り(0000〜1111)となります。
つまり、16=2^4という関係から、16進数と2進数は4ビット単位で完全に対応するのです。
これは8進数(2^3=8)が2進数の3ビットと対応するのと同じ原理で、基数が2のべき乗である数体系は2進数との変換が非常に簡単という特性があります。
変換手順の具体例(2桁の場合)
2桁の16進数「3B」を2進数に変換する手順を確認します。
16進数「3B」を2進数に変換する
左の桁「3」→ 2進数「0011」
右の桁「B」(=11)→ 2進数「1011」
並べると → 「0011 1011」
答え:16進数「3B」= 2進数「00111011」
各桁を独立して変換し、左から順番に並べるだけで完成です。
この簡単さが、16進数がプログラミングやハードウェア設計で重宝される理由のひとつといえるでしょう。
変換表を使った効率的な変換方法
続いては、変換表を使った効率的な変換方法を確認していきます。
変換表を手元に置いておくことで、暗記に頼らず正確な変換が行えます。
4桁の16進数の変換例
実際のプログラミングでよく登場する4桁の16進数「A5F2」を変換してみます。
16進数「A5F2」を2進数に変換する
「A」(=10)→ 1010
「5」→ 0101
「F」(=15)→ 1111
「2」→ 0010
並べると → 1010 0101 1111 0010
答え:16進数「A5F2」= 2進数「1010010111110010」
4桁の16進数はわずか16ビットの2進数に変換できます。
逆に言えば、16ビットの2進数を人間が読もうとすると非常に長く感じますが、16進数4桁に圧縮することで一目で把握しやすくなるという実用上のメリットがあるのです。
先頭の0(ゼロパディング)の扱い方
16進数から2進数へ変換する際、各桁を必ず4ビットで表現する点に注意が必要です。
たとえば16進数「5」を変換する際、2進数では「101」ではなく「0101」と4ビットで表記します。
これを「ゼロパディング」と呼び、各桁を必ず4ビットで揃えることで全体の桁数が整合するという重要な規則です。
ゼロパディングを怠ると、複数桁の変換で桁がずれてしまい、誤った値になるため必ず4ビットで揃える習慣をつけましょう。
2進数から16進数への逆変換
逆に2進数から16進数への変換も、4ビットごとに区切って変換表で読み替えるだけです。
2進数「11010110」を16進数に変換する
右から4ビットごとに区切る → 1101 | 0110
「1101」→ D(=13)
「0110」→ 6
答え:2進数「11010110」= 16進数「D6」
右から4ビットずつ区切る点がポイントで、左端が4ビットに満たない場合は先頭に0を補って4ビットにしてから変換します。
デジタル回路とネットワークでの16進数・2進数の活用
続いては、デジタル回路やネットワーク分野での16進数・2進数の活用事例を確認していきます。
16進数と2進数の変換知識は、実際のエンジニアリング現場で非常に重要な役割を果たしています。
デジタル回路設計での活用
デジタル回路設計では、レジスタの値やROMのデータ、制御信号の状態を2進数で管理しますが、人間が読み書きする際は16進数表記が使われます。
FPGAやマイコンの開発において、メモリの初期値やペリフェラルのレジスタ設定値は16進数で記述するのが標準的なスタイルです。
ロジックアナライザーの出力やオシロスコープのデジタル表示でも16進数が使われることが多く、2進数との素早い相互変換ができると作業効率が上がるでしょう。
IPアドレスとサブネットマスクでの活用
ネットワーク分野では、MACアドレスが16進数で表記されます。
たとえばMACアドレス「AA:BB:CC:DD:EE:FF」の各オクテットは8ビット(2進数8桁)を16進数2桁で表したものです。
IPv6アドレスも「2001:0db8:85a3:0000:0000:8a2e:0370:7334」のように16進数で表記されており、128ビットのIPv6アドレスを32桁の16進数で表現することで可読性を確保しています。
サブネットマスクの計算やIPアドレスの詳細解析においても、2進数と16進数を行き来する場面が多いでしょう。
アセンブリ言語とメモリダンプでの活用
アセンブリ言語では機械語の命令コードを16進数で記述します。
メモリダンプ(メモリの内容を表示したもの)も16進数で表示されることがほとんどであり、デバッグ作業では2進数のビットパターンと16進数の関係を直感的に理解している必要があります。
マルウェア解析やバイナリ解析の分野でも、ヘキサエディタを使って16進数でデータを直接読み書きするため、変換スキルは必須といえるでしょう。
まとめ
本記事では、16進数から2進数への変換の基本ルール・変換表の使い方・デジタル回路やネットワークでの活用まで幅広く解説してきました。
16進数1桁=2進数4ビットという対応関係を覚えることが変換の核心であり、変換表を使えば機械的に正確な変換が行えます。
ゼロパディングを忘れずに各桁を4ビットで揃えることも重要なポイントです。
デジタル回路・ネットワーク・プログラミングなど幅広い分野で活用される知識ですので、繰り返し練習してスムーズに変換できるようにしてください。