「16進数を2進数に変換したいけど、手計算だと面倒…」
Excelには、この変換を一発で行える関数があります。それがHEX2BIN関数です。
ネットワーク設定やビットフラグの確認など、16進数を2進数に変換する場面は意外とあります。でも1桁ずつ変換するのは手間がかかりますよね。
この記事では、ExcelのHEX2BIN関数の基本からエラー対策まで解説します。
ExcelのHEX2BIN関数とは?基本構文と対応バージョン
HEX2BIN関数は、16進数を2進数に変換するExcelの関数です。
16進数は「0〜9」と「A〜F」の16種類の文字で数を表します。一方、2進数は「0」と「1」だけで数を表します。
16進数の1桁は2進数の4桁に対応します。たとえば16進数の「A」は2進数で「1010」です。HEX2BIN関数を使えば、この変換を自動で行えますよ。
読み方と意味
読み方は「ヘックス・ツー・バイナリ」です。
- HEX = Hexadecimal(ヘクサデシマル、16進数)
- 2 = to(〜へ)
- BIN = Binary(バイナリ、2進数)
つまり「16進数から2進数へ」という意味です。関数名がそのまま機能を表しているので覚えやすいですよ。
どんなときに使うか
HEX2BIN関数は次のような場面で活躍します。
- 16進数のビットフラグを2進数に展開してON/OFFを確認したいとき
- ネットワークアドレスやサブネットマスクのビット構成を調べたいとき
- レジスタ値やメモリダンプの内容をビット単位で解析したいとき
- 情報処理試験の勉強で進数変換を練習したいとき
構文と引数の詳細
基本構文は次のとおりです。
=HEX2BIN(数値, [桁数])
引数は2つあります。必須なのは「数値」だけです。
| 引数 | 必須/任意 | 説明 |
|---|---|---|
| 数値 | 必須 | 2進数に変換したい16進数 |
| 桁数 | 任意 | 結果の文字数を指定。先頭をゼロで埋める |
引数1:数値(必須)
2進数に変換したい16進数を指定します。
直接値を入力してもセル参照でもOKです。指定できるのは10文字までです。
大文字・小文字は区別されません。「1F」でも「1f」でも同じ結果になります。
引数2:桁数(省略可)
結果の文字数(桁数)を整数で指定します。
省略すると、最小限の桁数で返されます。指定すると、先頭にゼロを埋めて桁数を揃えてくれます。
たとえば =HEX2BIN("A") は「1010」です。=HEX2BIN("A", 8) なら「00001010」になります。8ビット表記に揃えたいときに便利ですよ。
NOTE
桁数に小数を指定すると、小数点以下が切り捨てられます。0以下の値を指定すると#NUM!エラーです。
変換できる数値の範囲
HEX2BIN関数が変換できる範囲は限られています。出力が2進数10桁(10ビット)までなので、入力の16進数にも制限があります。
- 正の最大値: 1FF(10進数で511)→ 111111111(2進数9桁)
- 負の最小値: FFFFFFFE00(10進数で-512)→ 1000000000(2進数10桁)
10進数に換算すると -512から511 の範囲です。HEX2DEC関数のように広い範囲は扱えないので注意してください。
対応バージョン
Excel 2007以降は標準搭載されています。アドインの追加は不要です。
Excel for Microsoft 365(Windows/Mac)、Excel for the web、Excel 2024/2021/2019/2016 で動作します。Excel 2003以前を使っている場合は、分析ツールアドインの有効化が必要です。
HEX2BIN関数の基本的な使い方
シンプルな変換例(直接値を指定)
まずは関数に直接値を入力してみましょう。
=HEX2BIN("1F")
結果は「11111」です。16進数の1Fは、2進数で11111になります。
変換の仕組みを確認しておきます。16進数の各桁を4ビットの2進数に置き換えます。
| 16進数 | 1 | F (=15) |
|---|---|---|
| 2進数(4桁) | 0001 | 1111 |
つなげると「00011111」です。先頭のゼロを省略して「11111」になります。
よく使う変換例をまとめておきます。
| 入力(16進数) | 出力(2進数) | 備考 |
|---|---|---|
| 0 | 0 | |
| 1 | 1 | |
| A | 1010 | 10進数で10 |
| F | 1111 | 1桁の最大値 |
| 10 | 10000 | 16進数の桁上がり |
| 1F | 11111 | |
| FF | 11111111 | 8ビットの最大値(10進数で255) |
| 1FF | 111111111 | 正の最大値(10進数で511) |
セル参照で変換する
セルの値を参照して変換することもできます。A1に「1A」が入っているとします。
=HEX2BIN(A1)
結果は「11010」です。参照先の値を変えれば結果も自動で更新されます。複数の値をまとめて変換したいときに活用してみてください。
桁数を指定してゼロ埋めする
第2引数に桁数を指定すると、先頭にゼロを埋めて桁数を揃えられます。
=HEX2BIN("A", 8)
結果は「00001010」です。8桁に揃えてくれました。
桁数を指定しない場合と比べてみましょう。
| 数式 | 結果 | 備考 |
|---|---|---|
| =HEX2BIN(“A”) | 1010 | 最小桁数(4桁) |
| =HEX2BIN(“A”, 8) | 00001010 | 8桁にゼロ埋め |
| =HEX2BIN(“F”) | 1111 | 最小桁数(4桁) |
| =HEX2BIN(“F”, 8) | 00001111 | 8桁にゼロ埋め |
バイト単位(8ビット)で揃えたいときは桁数に8を指定すると見やすくなりますよ。
HEX2BIN関数の応用例
負の数を変換する(2の補数)
HEX2BIN関数に負の数を表す16進数を指定すると、2の補数(にのほすう)で表現された10桁の2進数が返ります。
2の補数とは、コンピュータが負の整数を表す仕組みです。最上位ビットが「1」なら負の数を意味します。
=HEX2BIN("FFFFFFFFFF")
結果は「1111111111」です。これは10進数の-1に相当します。
負の数の代表的な変換例です。
| 入力(16進数) | 出力(2進数) | 10進数 | 備考 |
|---|---|---|---|
| FFFFFFFFFF | 1111111111 | -1 | 全桁1 |
| FFFFFFFFFE | 1111111110 | -2 | |
| FFFFFFFF00 | 1100000000 | -256 | |
| FFFFFFFE00 | 1000000000 | -512 | 負の最小値 |
逆変換のBIN2HEX関数を使えば元に戻せます。
=BIN2HEX(HEX2BIN("1F"))
結果は「1F」です。正しく往復変換できることを確認できますよ。
ビットフラグを確認する
HEX2BIN関数の実務での活用例として、ビットフラグの解析があります。
ビットフラグとは、2進数の各桁(ビット)にON/OFFの意味を持たせる仕組みです。設定値やステータスコードを16進数で管理しているシステムは多くあります。
たとえば、設定値が16進数「0B」だった場合を考えます。
=HEX2BIN("B", 8)
結果は「00001011」です。右から順に各ビットの意味を確認できます。
| ビット位置 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
|---|---|---|---|---|---|---|---|---|
| 値 | 0 | 0 | 0 | 0 | 1 | 0 | 1 | 1 |
| 状態 | OFF | OFF | OFF | OFF | ON | OFF | ON | ON |
ビット0、ビット1、ビット3がONであることがわかります。MID関数(文字列から指定位置の文字を取り出す関数)を使えば、特定ビットの値だけを取り出すこともできますよ。
HEX2BIN関数のよくあるエラーと対処法
HEX2BIN関数で発生するエラーは主に2種類です。原因別に対処法を見ていきましょう。
#NUM!エラー:数値が範囲外
変換できる範囲はFFFFFFFFE00〜1FFです。範囲外の値を指定するとエラーになります。
=HEX2BIN("200") → #NUM!エラー(正の最大値1FFを超過)
=HEX2BIN("FFFFFFFDFF") → #NUM!エラー(負の最小値FFFFFFFE00を下回る)
10進数で-512〜511の範囲に収まっているか確認しましょう。HEX2DEC関数で10進数に変換すると、範囲内かどうかを確かめやすいですよ。
#NUM!エラー:桁数が結果より少ない
桁数の指定が結果に必要な桁数より少ない場合もエラーです。
=HEX2BIN("F", 2) → #NUM!エラー
Fを2進数にすると「1111」で4桁必要です。桁数に2を指定すると足りません。桁数は結果の桁数以上を指定してください。
#VALUE!エラー:16進数ではない文字
数値に16進数として無効な文字を含めると#VALUE!エラーです。
=HEX2BIN("GG") → #VALUE!エラー
16進数で使える文字は0〜9とA〜Fだけです。G以降のアルファベットや記号は使えません。
エラー一覧表
| エラー | 発生条件 | 対処法 |
|---|---|---|
| #NUM! | 値がFFFFFFFFE00〜1FFの範囲外 | HEX2DECで10進数に変換して範囲を確認 |
| #NUM! | 桁数が結果の桁数より少ない | 桁数を増やす(8や10を推奨) |
| #NUM! | 桁数に0以下を指定 | 1以上の整数を指定 |
| #VALUE! | 0〜9・A〜F以外の文字を含む | 入力値の文字を確認 |
IFERROR関数と組み合わせてエラーを回避する
エラーが出る可能性がある場合は、IFERROR関数(エラー時に代替値を返す関数)で囲むと安全です。
=IFERROR(HEX2BIN(A1, 8), "変換エラー")
この数式なら、A1の値が範囲外でも「変換エラー」と表示されます。大量のデータを一括変換するときに活用してみてください。
ExcelのHEX2BINと他の進数変換関数の使い分け
HEX2BIN・BIN2HEX(逆変換)の関係
HEX2BIN関数とBIN2HEX関数は逆変換の関係です。
| 関数 | 変換方向 | 入力 | 出力 |
|---|---|---|---|
| HEX2BIN | 16進数 → 2進数 | 0〜Fの文字列(最大10桁) | 2進数テキスト(最大10桁) |
| BIN2HEX | 2進数 → 16進数 | 0と1の文字列(最大10桁) | 16進数テキスト(最大10桁) |
使いどころを整理します。
- HEX2BIN: 16進数のデータをビット単位で確認したいとき
- BIN2HEX: 2進数のビット列を16進数にまとめたいとき
HEX系関数の比較
Excelには16進数を他の進数に変換するHEX系関数が3つあります。
HEX2BINとHEX2OCTは出力が10桁固定のため、入力範囲が狭めです。HEX2DECは範囲が広い点が特徴ですよ。
進数変換関数の一覧
Excelの進数変換関数は全部で12種類あります。関数名の規則は「変換元 + 2 + 変換先」です。
| 関数名 | 変換方向 |
|---|---|
| BIN2DEC | 2進数 → 10進数 |
| BIN2HEX | 2進数 → 16進数 |
| BIN2OCT | 2進数 → 8進数 |
| DEC2BIN | 10進数 → 2進数 |
| DEC2HEX | 10進数 → 16進数 |
| DEC2OCT | 10進数 → 8進数 |
| HEX2BIN ※この記事 | 16進数 → 2進数 |
| HEX2DEC | 16進数 → 10進数 |
| HEX2OCT | 16進数 → 8進数 |
| OCT2BIN | 8進数 → 2進数 |
| OCT2DEC | 8進数 → 10進数 |
| OCT2HEX | 8進数 → 16進数 |
この命名規則を覚えておけば、どの関数を使えばいいか迷いませんよ。
まとめ
HEX2BIN関数は、16進数を2進数に変換する関数です。
ポイントを整理します。
- 構文は
=HEX2BIN(数値, [桁数])の最大2引数 - 変換できる範囲は10進数で-512〜511
- 桁数を指定すると先頭をゼロで埋めて桁揃えできる
- 負の数は10桁の2の補数で返される
- ビットフラグの解析やネットワーク設定の確認に使える
- #NUM!エラーは「範囲外」か「桁数不足」が原因
- 逆変換にはBIN2HEX関数を使う
- Excel 2007以降で標準搭載。アドイン不要
まずは =HEX2BIN("FF") で「11111111」が返ることを試してみてください。
