「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進数 |
この命名規則を覚えておけば、どの関数を使えばいいか迷いませんよ。
MID関数で特定ビットを取り出す
HEX2BIN関数で2進数に変換したあと、MID関数(文字列から指定位置の文字を取り出す関数)と組み合わせると、特定のビットだけを取り出せます。
n番目のビット(右から)を取り出す
ビット番号は一般的に右端を0番目(最下位ビット)とします。2進数文字列の右端から数えるには LEN - ビット番号 で位置を計算します。
=MID(HEX2BIN("B",8), 8-ビット番号, 1)
たとえば16進数「B」(2進数「00001011」)のビット0(最下位)を確認するには次の数式です。
=MID(HEX2BIN("B",8), 8, 1) → 1(ビット0はON)
=MID(HEX2BIN("B",8), 7, 1) → 1(ビット1はON)
=MID(HEX2BIN("B",8), 6, 1) → 0(ビット2はOFF)
=MID(HEX2BIN("B",8), 5, 1) → 1(ビット3はON)
IF関数でON/OFFを表示する
ビット値(「0」か「1」)を「ON」「OFF」の言葉に変換したい場合は、IF関数と組み合わせます。
=IF(MID(HEX2BIN("B",8),8,1)="1","ON","OFF")
ビット番号を変数にしたいとき(A1にビット番号を入れる場合):
=IF(MID(HEX2BIN("B",8), 8-A1, 1)="1","ON","OFF")
A1に「0」を入れるとビット0(最下位ビット)のON/OFFが確認できます。
HEX2BIN関数を使った進数変換ツールをExcelで作る
HEX2BINと他の進数変換関数を組み合わせると、16進数・2進数・10進数を相互変換する早見表をExcelで作れます。設定値の確認や仕様書との照合作業で役立ちます。
16進数→2進数→10進数の変換早見表
A列に16進数を入力し、B列・C列に変換結果を表示する構成です。
| A列(入力) | B列(2進数) | C列(10進数) |
|---|---|---|
0F | =HEX2BIN(A2,8) | =HEX2DEC(A2) |
1A | =HEX2BIN(A2,8) | =HEX2DEC(A2) |
FF | 変換不可(範囲外) | =HEX2DEC(A2) |
HEX2BIN関数の変換範囲は16進数で「1FF」(10進数の511)までです。「FF」(10進数255)はこの範囲内なので変換できますが、「100」以上の2バイト値は #NUM! エラーになります。
10進数を入力して2進数・16進数をまとめて確認する
DEC2BIN関数とDEC2HEX関数を組み合わせると、10進数を起点に3つの表記を並べて確認できます。
| A列(10進数) | B列(2進数) | C列(16進数) |
|---|---|---|
=A2 | =DEC2BIN(A2,8) | =DEC2HEX(A2,2) |
A列の数値を変えるだけでB列・C列が自動更新されるため、対応表の作成や値の照合がすばやくできます。
2進数から16進数に変換したい場合はBIN2HEX関数を使います。
=BIN2HEX("00001111") → F
=BIN2HEX("00001111", 2) → 0F(2桁ゼロ埋め)
HEX2BIN関数のよくある質問(FAQ)
Q1. HEX2BINはGoogleスプレッドシートでも使える?
はい。Googleスプレッドシートでも =HEX2BIN(数値, 桁数) の構文でまったく同じように動作します。変換範囲も同じ(10進数で-512〜511)です。ExcelとSheetsを両方使う環境でも数式を変える必要がありません。
Q2. 512以上の大きな16進数を2進数に変換するには?
HEX2BIN関数の変換範囲(-512〜511)を超える場合は、16進数を10進数に変換してから DEC2BIN関数 を使う方法も検討できますが、DEC2BINも同じ範囲制限があります。
大きな数値の2進数変換は、Excel単体では難しいのが現状です。大きな値を扱う場合はPower QueryやVBAを使うか、オンラインの進数変換ツールを利用する方が現実的です。
Q3. 16進数の大文字と小文字は区別される?
区別されません。「1A」と「1a」はどちらも同じ結果を返します。セルに入力された16進数が大文字・小文字混在でも問題なく動作します。
Q4. HEX2BINで10進数を直接2進数に変換できる?
できません。HEX2BIN関数は16進数→2進数の変換専用です。10進数から2進数に変換するには、DEC2BIN関数を使ってください。
=DEC2BIN(15) → 1111
=HEX2BIN("F") → 1111(16進数のFは10進数の15)
10進数から変換したいならDEC2BIN、16進数から変換したいならHEX2BINと使い分けましょう。
まとめ
HEX2BIN関数は、16進数を2進数に変換する関数です。
ポイントを整理します。
- 構文は
=HEX2BIN(数値, [桁数])の最大2引数 - 変換できる範囲は10進数で-512〜511
- 桁数を指定すると先頭をゼロで埋めて桁揃えできる
- 負の数は10桁の2の補数で返される
- ビットフラグの解析やネットワーク設定の確認に使える
- #NUM!エラーは「範囲外」か「桁数不足」が原因
- 逆変換にはBIN2HEX関数を使う
- Excel 2007以降で標準搭載。アドイン不要
まずは =HEX2BIN("FF") で「11111111」が返ることを試してみてください。