「10進数を2進数に変換したいけど、手計算は面倒…」
Excelには、そんな変換を一発で行える関数があります。それがDEC2BIN関数です。
ネットワーク設定やプログラミング学習など、2進数が必要になる場面は意外とあります。でも手計算で変換するのは桁数が増えると大変ですよね。
この記事では、ExcelのDEC2BIN関数の使い方を基本から解説します。桁数指定のゼロ埋め、エラー対策、511を超える値の変換テクニックまで網羅しますよ。
ExcelのDEC2BIN関数とは?読み方と基本概要
DEC2BIN関数は、10進数を2進数に変換するExcelの関数です。
10進数は私たちが普段使っている0〜9の数字で表す方法です。一方、2進数は「0」と「1」の2種類だけで数を表します。コンピュータの内部では、すべてのデータが2進数で処理されています。
DEC2BIN関数を使えば、この変換を自動で行えますよ。
読み方と意味
読み方は「デック・ツー・ビン」です。
- DEC = Decimal(デシマル、10進数)
- 2 = to(〜へ)
- BIN = Binary(バイナリ、2進数)
つまり「10進数から2進数へ」という意味です。Excelの進数変換関数はすべてこの命名規則に従います。たとえばOCT2DEC関数なら「8進数から10進数へ」です。関数名がそのまま機能を表しているので覚えやすいですよ。
どんなときに使うか
DEC2BIN関数は次のような場面で活躍します。
- IPアドレスのサブネットマスクを2進数で確認したいとき
- プログラミング学習で10進数と2進数の対応を調べたいとき
- デジタル回路やビットフラグの値を可視化したいとき
- 情報処理試験の勉強で進数変換を練習したいとき
- アクセス権限のビット構成を分解して確認したいとき
DEC2BIN関数の書き方(構文と引数)
基本構文
=DEC2BIN(数値, [桁数])
引数は2つあります。必須なのは「数値」だけです。
引数の説明
| 引数 | 必須/任意 | 説明 |
|---|---|---|
| 数値 | 必須 | 2進数に変換したい10進数の整数 |
| 桁数 | 任意 | 結果の文字数を指定。先頭をゼロで埋める |
引数1:数値(必須)
2進数に変換したい10進数の整数を指定します。セル参照でも直接入力でもOKです。小数を指定した場合は、小数点以下が切り捨てられます。
引数2:桁数(省略可)
結果の文字数(桁数)を整数で指定します。省略すると、変換に必要な最小限の桁数で返されます。指定すると、先頭にゼロを埋めて桁数を揃えてくれますよ。
たとえば =DEC2BIN(5) は「101」です。=DEC2BIN(5, 8) なら「00000101」になります。
NOTE
桁数に小数を指定した場合は、小数点以下が切り捨てられます。0以下の値を指定すると#NUM!エラーになります。
変換できる数値の範囲(-512〜511)
変換できる数値の範囲は -512から511 です。これは10ビット(10桁)の符号付き整数で表現できる範囲です。2の9乗=512が根拠になっています。
- 正の最大値: 511 → 111111111(9桁)
- 負の最小値: -512 → 1000000000(10桁)
範囲外の数値を指定すると#NUM!エラーになります。
対応バージョン一覧
DEC2BIN関数は、Excel 2007以降で標準搭載されています。
| バージョン | 対応状況 |
|---|---|
| Microsoft 365(Windows / Mac) | 対応 |
| Excel 2024 / 2021 / 2019 / 2016 | 対応 |
| Excel for the web | 対応 |
| Excel 2007 / 2010 / 2013 | 対応 |
| Excel 2003以前 | 分析ツールアドインが必要 |
現在の主要バージョンならアドインの追加は不要です。お使いのバージョンが古くなければ気にしなくて大丈夫ですよ。
DEC2BIN関数の基本的な使い方
シンプルな変換例(0〜511)
まずは関数に直接値を入力してみましょう。
=DEC2BIN(9)
結果は「1001」です。10進数の9は、2進数で1001になります。
変換の仕組みを確認しておきます。各桁に2のべき乗(にのべきじょう)を対応させて合計します。
| 桁 | 4桁目 | 3桁目 | 2桁目 | 1桁目 |
|---|---|---|---|---|
| 2進数 | 1 | 0 | 0 | 1 |
| 重み | 2^3 = 8 | 2^2 = 4 | 2^1 = 2 | 2^0 = 1 |
| 計算 | 1 x 8 = 8 | 0 x 4 = 0 | 0 x 2 = 0 | 1 x 1 = 1 |
合計: 8 + 0 + 0 + 1 = 9 ですね。
よく使う変換例をまとめておきます。
| 入力(10進数) | 数式 | 出力(2進数) |
|---|---|---|
| 0 | =DEC2BIN(0) | 0 |
| 1 | =DEC2BIN(1) | 1 |
| 5 | =DEC2BIN(5) | 101 |
| 9 | =DEC2BIN(9) | 1001 |
| 10 | =DEC2BIN(10) | 1010 |
| 100 | =DEC2BIN(100) | 1100100 |
| 255 | =DEC2BIN(255) | 11111111 |
| 511 | =DEC2BIN(511) | 111111111 |
結果はテキスト文字列として返されます。見た目は数値ですが、左寄せで表示されるのが目印です。
負の数の変換(2の補数表現)
DEC2BIN関数に負の数を指定すると、2の補数(にのほすう)で表現された10桁の2進数が返ります。
2の補数とは、コンピュータが負の整数を表す仕組みです。最上位ビット(左端の桁)が「1」なら負の数を意味します。
=DEC2BIN(-100)
結果は「1110011100」です。桁数の指定に関わらず、常に10桁で返されます。
2の補数の変換手順を-100の例で見てみましょう。
- 100の2進数を求める → 0001100100
- 各ビットを反転させる(0→1、1→0) → 1110011011
- 反転した値に1を加える → 1110011100
- これが-100の2の補数表現
負の数の代表的な変換例です。
| 入力(10進数) | 出力(2進数) | 備考 |
|---|---|---|
| -1 | 1111111111 | 全ビット1 |
| -100 | 1110011100 | 10桁固定 |
| -256 | 1100000000 | |
| -512 | 1000000000 | 負の最小値 |
逆変換のBIN2DEC関数を使えば元に戻せます。
=BIN2DEC(DEC2BIN(-100))
結果は「-100」です。正しく往復変換できることを確認できますよ。
桁数を指定してゼロ埋めする
第2引数に桁数を指定すると、先頭にゼロを埋めて桁数を揃えられます。
=DEC2BIN(9, 8)
結果は「00001001」です。8桁に揃えてくれました。
桁数を指定しない場合と比べてみましょう。
| 数式 | 結果 | 備考 |
|---|---|---|
| =DEC2BIN(5) | 101 | 最小桁数(3桁) |
| =DEC2BIN(5, 8) | 00000101 | 8桁にゼロ埋め |
| =DEC2BIN(9, 4) | 1001 | ちょうど4桁 |
| =DEC2BIN(9, 8) | 00001001 | 8桁にゼロ埋め |
ネットワーク関連で8ビット固定にしたい場面や、複数の値を縦に並べて比較するときに便利ですよ。
DEC2BIN関数のよくあるエラーと対処法
DEC2BIN関数で発生するエラーは主に2種類です。原因別に対処法を見ていきましょう。
#NUM!エラー:範囲外と桁数の問題
#NUM!エラーが出る原因は3つあります。
原因1:数値が範囲外(-512未満または511超)
=DEC2BIN(512) → #NUM!エラー
=DEC2BIN(-513) → #NUM!エラー
対処法は、指定する値が-512〜511に収まっているか確認することです。
原因2:桁数が0以下
=DEC2BIN(9, 0) → #NUM!エラー
桁数には1以上の整数を指定してください。
原因3:桁数が結果の桁数より少ない
=DEC2BIN(9, 2) → #NUM!エラー
9の2進数は「1001」で4桁必要です。桁数に2を指定すると足りないためエラーになります。
#VALUE!エラー:文字列・空白セルの混入
#VALUE!エラーが出る原因は2つあります。
原因1:数値が数値型でない
=DEC2BIN("ABC") → #VALUE!エラー
原因2:桁数が数値型でない
=DEC2BIN(9, "A") → #VALUE!エラー
引数には数値型のデータを指定しましょう。空白セルを参照している場合も注意が必要です。
エラーパターン早見表
エラーの原因と対処法を表にまとめます。
| エラー | 原因 | 数式例 | 対処法 |
|---|---|---|---|
| #NUM! | 数値が-512未満または511超 | =DEC2BIN(512) | 値を-512〜511に収める |
| #NUM! | 桁数が0以下 | =DEC2BIN(9, 0) | 桁数を1以上にする |
| #NUM! | 桁数が結果の桁数より少ない | =DEC2BIN(9, 2) | 桁数を結果以上にする |
| #VALUE! | 数値が文字列 | =DEC2BIN(“ABC”) | 数値型のデータを指定 |
| #VALUE! | 桁数が文字列 | =DEC2BIN(9, “A”) | 桁数に数値を指定 |
IFERRORと組み合わせてエラー回避
エラーが出る可能性がある場合は、IFERROR関数で囲むと安全です。
=IFERROR(DEC2BIN(A1), "変換エラー")
この数式なら、A1の値が範囲外でもエラーの代わりに「変換エラー」と表示されます。
入力値のチェックと組み合わせる方法もあります。
=IF(AND(A1>=-512, A1<=511), DEC2BIN(A1), "範囲外")
あらかじめ範囲をチェックしてから変換すると、より安心ですよ。
511を超える大きな数値を2進数に変換するテクニック
DEC2BIN関数の上限は511です。でも実務では512以上の数値を2進数にしたい場面もありますよね。
分割結合で18ビットまで対応する
数値を上位ビットと下位ビットに分割して、文字列として結合する方法が使えます。
たとえば10進数の1000を2進数に変換してみましょう。
=DEC2BIN(INT(A1/512), 9) & DEC2BIN(MOD(A1, 512), 9)
この数式は次の手順で動きます。
INT(A1/512)で上位ビット(512で割った商)を計算MOD(A1, 512)で下位ビット(512で割った余り)を計算- それぞれをDEC2BIN関数で9桁の2進数に変換
&で文字列結合して18桁の2進数を生成
A1に1000を入れると、結果は「000000001111101000」です。
BASE関数を使う方法(Microsoft 365 / Excel 2013以降)
Excel 2013以降なら、BASE関数(ベース関数)を使う方法もあります。BASE関数は任意の基数(2〜36)に変換できる関数です。
=BASE(1000, 2)
結果は「1111101000」です。DEC2BIN関数の-512〜511の制限がないので、大きな値もそのまま変換できます。
ただしBASE関数には注意点があります。
| 項目 | DEC2BIN | BASE |
|---|---|---|
| 入力範囲 | -512〜511 | 0〜2^53 |
| 負の数 | 2の補数で返す | 非対応(エラー) |
| 桁数指定 | 第2引数で指定 | 第3引数で指定 |
| 対応バージョン | Excel 2007以降 | Excel 2013以降 |
負の数の変換が必要ならDEC2BIN関数を使いましょう。正の大きな値だけならBASE関数が便利ですよ。
実用例:IPアドレスのオクテットを2進数に変換する
IPアドレスのサブネットマスクを2進数で確認するときにDEC2BIN関数が便利です。
各オクテット(IPアドレスをドットで区切った各部分)は0〜255の値です。DEC2BIN関数の範囲内なので、桁数を8に指定すれば8ビット固定で変換できます。
=DEC2BIN(255, 8) → 11111111
=DEC2BIN(192, 8) → 11000000
=DEC2BIN(128, 8) → 10000000
=DEC2BIN(0, 8) → 00000000
たとえばサブネットマスク「255.255.255.0」の各オクテットを変換すると、次のようになります。
| オクテット | 10進数 | 数式 | 2進数(8桁) |
|---|---|---|---|
| 1番目 | 255 | =DEC2BIN(255, 8) | 11111111 |
| 2番目 | 255 | =DEC2BIN(255, 8) | 11111111 |
| 3番目 | 255 | =DEC2BIN(255, 8) | 11111111 |
| 4番目 | 0 | =DEC2BIN(0, 8) | 00000000 |
連結すると「11111111.11111111.11111111.00000000」です。上位24ビットがネットワーク部だと一目でわかりますよ。
CIDR表記との対応
よく使うサブネットマスクとCIDR表記(スラッシュ表記)の対応も確認しておきましょう。
| CIDR | サブネットマスク | ネットワークビット数 |
|---|---|---|
| /24 | 255.255.255.0 | 24ビット |
| /25 | 255.255.255.128 | 25ビット |
| /26 | 255.255.255.192 | 26ビット |
| /28 | 255.255.255.240 | 28ビット |
=DEC2BIN(240, 8) の結果「11110000」を見れば、上位4ビットがネットワーク部とすぐわかります。ネットワークの設定値を確認するときに試してみてください。
実用例:ビットフラグの分解と可視化
ビットフラグとは、1つの数値の各ビットに異なる設定を割り当てる管理方法です。DEC2BIN関数で可視化すると、どのフラグがONになっているか一目でわかります。
アクセス権限の例
たとえば、8ビットでユーザー権限を管理する場合を考えましょう。
| ビット位置 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 |
|---|---|---|---|---|---|---|---|---|
| 権限 | 管理者 | 削除 | 編集 | 閲覧 | 印刷 | DL | 共有 | ログイン |
権限値が「53」のユーザーのビット構成を確認します。
=DEC2BIN(53, 8)
結果は「00110101」です。これを表に当てはめると、閲覧・編集・ログイン・印刷の4つの権限がONだとわかります。
個別ビットの判定
特定のビットがONかどうかを判定するには、BITAND関数(ビットアンド関数)を組み合わせます。
=IF(BITAND(A1, 32)>0, "ON", "OFF")
この数式は、A1の値の6ビット目(閲覧権限=32)がONかOFFかを判定します。32は2^5(2の5乗)で、6ビット目に対応する値です。
BITOR関数で権限の追加、BITXOR関数で権限の反転もできますよ。
BIN2DEC関数で逆変換する(2進数→10進数)
DEC2BIN関数の逆変換にはBIN2DEC関数を使います。セットで覚えておくと便利です。
往復変換で検算する
変換結果が正しいか確認するには、往復変換が有効です。
=BIN2DEC(DEC2BIN(100))
結果が「100」に戻れば変換が正確だと確認できます。負の数でも同様です。
=BIN2DEC(DEC2BIN(-256))
結果は「-256」です。2の補数で表現された10桁の2進数を、BIN2DEC関数が正しく負の数に戻してくれます。
DEC2BINとBIN2DECの仕様比較
| 項目 | DEC2BIN | BIN2DEC |
|---|---|---|
| 変換方向 | 10進数 → 2進数 | 2進数 → 10進数 |
| 入力 | -512〜511の整数 | 最大10桁の2進数文字列 |
| 出力 | テキスト文字列 | 数値(-512〜511) |
| 桁数指定 | あり(第2引数) | なし |
DEC系3関数を比較する(DEC2BIN・DEC2OCT・DEC2HEX)
Excelには10進数から他の進数に変換するDEC系関数が3つあります。構文はすべて 関数名(数値, [桁数]) で同じです。
変換先・有効範囲・主な用途の比較表
| 項目 | DEC2BIN | DEC2OCT | DEC2HEX |
|---|---|---|---|
| 変換先 | 2進数 | 8進数 | 16進数 |
| ビット数 | 10ビット | 30ビット | 40ビット |
| 入力範囲(正) | 0〜511 | 0〜536,870,911 | 0〜549,755,813,887 |
| 入力範囲(負) | -512〜-1 | -536,870,912〜-1 | -549,755,813,888〜-1 |
| 主な用途 | ビット演算、ネットワーク | Unixパーミッション | カラーコード、メモリアドレス |
ビット数の違いには数学的な根拠があります。DEC2BINは10ビット(2の10乗=1,024通り)です。DEC2OCTは30ビット(約10.7億通り)、DEC2HEXは40ビット(約1.1兆通り)になります。
3関数とも、負の数は10桁の補数で返す点が共通しています。DEC2BINは入力範囲が最も狭いので、大きな数値を扱うときは注意してくださいね。
どの関数を選ぶかの判断基準
迷ったときは、変換先の用途で選びましょう。
進数変換関数の全体マップ(全12関数)
Excelの進数変換関数は全部で12種類あります。関数名の規則は「変換元 + 2 + 変換先」です。
| 変換元\変換先 | → 2進数(BIN) | → 8進数(OCT) | → 10進数(DEC) | → 16進数(HEX) |
|---|---|---|---|---|
| 2進数(BIN) | — | BIN2OCT | BIN2DEC | BIN2HEX |
| 8進数(OCT) | OCT2BIN | — | OCT2DEC | OCT2HEX |
| 10進数(DEC) | DEC2BIN | DEC2OCT | — | DEC2HEX |
| 16進数(HEX) | HEX2BIN | HEX2OCT | HEX2DEC | — |
この命名規則を覚えておけば、どの関数を使えばいいか迷いませんよ。
まとめ
ExcelのDEC2BIN関数は、10進数を2進数に変換する関数です。
ポイントを整理します。
- 構文は
=DEC2BIN(数値, [桁数])の最大2引数 - 変換できる範囲は-512〜511の整数
- 桁数を指定すると先頭をゼロで埋めて桁揃えできる
- 負の数は10桁の2の補数(にのほすう)で返される
- #NUM!エラーは「範囲外」「桁数不足」「桁数ゼロ以下」が原因
- #VALUE!エラーは「文字列の混入」が原因
- 511を超える値は分割結合またはBASE関数で対応
- 逆変換にはBIN2DEC関数を使う
- IPアドレスやビットフラグの可視化に活躍する
- Excel 2007以降で標準搭載。アドイン不要
まずは =DEC2BIN(9) で「1001」が返ることを試してみてください。
