ExcelのDEC2BIN関数の使い方|10進数→2進数変換と桁数指定のコツ

スポンサーリンク

「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進数1001
重み2^3 = 82^2 = 42^1 = 22^0 = 1
計算1 x 8 = 80 x 4 = 00 x 2 = 01 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の例で見てみましょう。

  1. 100の2進数を求める → 0001100100
  2. 各ビットを反転させる(0→1、1→0) → 1110011011
  3. 反転した値に1を加える → 1110011100
  4. これが-100の2の補数表現

負の数の代表的な変換例です。

入力(10進数)出力(2進数)備考
-11111111111全ビット1
-100111001110010桁固定
-2561100000000 
-5121000000000負の最小値

逆変換のBIN2DEC関数を使えば元に戻せます。

=BIN2DEC(DEC2BIN(-100))

結果は「-100」です。正しく往復変換できることを確認できますよ。

桁数を指定してゼロ埋めする

第2引数に桁数を指定すると、先頭にゼロを埋めて桁数を揃えられます。

=DEC2BIN(9, 8)

結果は「00001001」です。8桁に揃えてくれました。

桁数を指定しない場合と比べてみましょう。

数式結果備考
=DEC2BIN(5)101最小桁数(3桁)
=DEC2BIN(5, 8)000001018桁にゼロ埋め
=DEC2BIN(9, 4)1001ちょうど4桁
=DEC2BIN(9, 8)000010018桁にゼロ埋め

ネットワーク関連で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)

この数式は次の手順で動きます。

  1. INT(A1/512) で上位ビット(512で割った商)を計算
  2. MOD(A1, 512) で下位ビット(512で割った余り)を計算
  3. それぞれをDEC2BIN関数で9桁の2進数に変換
  4. & で文字列結合して18桁の2進数を生成

A1に1000を入れると、結果は「000000001111101000」です。

BASE関数を使う方法(Microsoft 365 / Excel 2013以降)

Excel 2013以降なら、BASE関数(ベース関数)を使う方法もあります。BASE関数は任意の基数(2〜36)に変換できる関数です。

=BASE(1000, 2)

結果は「1111101000」です。DEC2BIN関数の-512〜511の制限がないので、大きな値もそのまま変換できます。

ただしBASE関数には注意点があります。

項目DEC2BINBASE
入力範囲-512〜5110〜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サブネットマスクネットワークビット数
/24255.255.255.024ビット
/25255.255.255.12825ビット
/26255.255.255.19226ビット
/28255.255.255.24028ビット

=DEC2BIN(240, 8) の結果「11110000」を見れば、上位4ビットがネットワーク部とすぐわかります。ネットワークの設定値を確認するときに試してみてください。

実用例:ビットフラグの分解と可視化

ビットフラグとは、1つの数値の各ビットに異なる設定を割り当てる管理方法です。DEC2BIN関数で可視化すると、どのフラグがONになっているか一目でわかります。

アクセス権限の例

たとえば、8ビットでユーザー権限を管理する場合を考えましょう。

ビット位置87654321
権限管理者削除編集閲覧印刷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の仕様比較

項目DEC2BINBIN2DEC
変換方向10進数 → 2進数2進数 → 10進数
入力-512〜511の整数最大10桁の2進数文字列
出力テキスト文字列数値(-512〜511)
桁数指定あり(第2引数)なし

DEC系3関数を比較する(DEC2BIN・DEC2OCT・DEC2HEX)

Excelには10進数から他の進数に変換するDEC系関数が3つあります。構文はすべて 関数名(数値, [桁数]) で同じです。

変換先・有効範囲・主な用途の比較表

項目DEC2BINDEC2OCTDEC2HEX
変換先2進数8進数16進数
ビット数10ビット30ビット40ビット
入力範囲(正)0〜5110〜536,870,9110〜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は入力範囲が最も狭いので、大きな数値を扱うときは注意してくださいね。

どの関数を選ぶかの判断基準

迷ったときは、変換先の用途で選びましょう。

  • ビット単位の操作が目的 → DEC2BIN(2進数が直感的)
  • Unixパーミッション(755など)を扱うDEC2OCT
  • カラーコード(#FF0000など)を扱うDEC2HEX

進数変換関数の全体マップ(全12関数)

Excelの進数変換関数は全部で12種類あります。関数名の規則は「変換元 + 2 + 変換先」です。

変換元\変換先→ 2進数(BIN)→ 8進数(OCT)→ 10進数(DEC)→ 16進数(HEX)
2進数(BIN)BIN2OCTBIN2DECBIN2HEX
8進数(OCT)OCT2BINOCT2DECOCT2HEX
10進数(DEC)DEC2BINDEC2OCTDEC2HEX
16進数(HEX)HEX2BINHEX2OCTHEX2DEC

この命名規則を覚えておけば、どの関数を使えばいいか迷いませんよ。

まとめ

ExcelのDEC2BIN関数は、10進数を2進数に変換する関数です。

ポイントを整理します。

  • 構文は =DEC2BIN(数値, [桁数]) の最大2引数
  • 変換できる範囲は-512〜511の整数
  • 桁数を指定すると先頭をゼロで埋めて桁揃えできる
  • 負の数は10桁の2の補数(にのほすう)で返される
  • #NUM!エラーは「範囲外」「桁数不足」「桁数ゼロ以下」が原因
  • #VALUE!エラーは「文字列の混入」が原因
  • 511を超える値は分割結合またはBASE関数で対応
  • 逆変換にはBIN2DEC関数を使う
  • IPアドレスやビットフラグの可視化に活躍する
  • Excel 2007以降で標準搭載。アドイン不要

まずは =DEC2BIN(9) で「1001」が返ることを試してみてください。

タイトルとURLをコピーしました