スプレッドシートのDEC2BIN関数の使い方|10進→2進

スポンサーリンク

「10進数で管理しているフラグ値を、そのまま2進数のビット列として確認したい…」

スプレッドシートでは、アクセス権限の管理値やIPアドレスのオクテット、ビットフラグの可視化など、10進数と2進数を行き来する場面が意外と多いものです。手計算で2で割り続けるのは、桁が増えるほど面倒ですよね。

そんなときに便利なのがGoogleスプレッドシートのDEC2BIN関数です。10進数のセルを指定するだけで、2進数の文字列に一発変換してくれますよ。

しかも桁数を指定してゼロ埋めできるので、ビットフラグの一覧表もきれいに揃えられます。Excelとも互換性があるため、ファイルをやり取りする現場でも安心して使えますね。

この記事では、DEC2BIN関数の基本から桁数指定・負の数・エラー対処法まで解説します。ARRAYFORMULAでの一括変換や実務の活用例にも触れていきますよ。

DEC2BIN関数とは?

DEC2BIN関数(読み方: デシマル・トゥ・バイナリ)は、10進数を2進数に変換するエンジニアリング関数です。Googleスプレッドシートに標準搭載されていて、追加設定なしで使えます。

10進数は普段私たちが使っている「0〜9」の10個の数字で数値を表す方法です。一方の2進数は「0」と「1」の2つだけで数値を表します。

コンピュータの内部はすべて2進数で動いています。ビットフラグの確認やネットワーク設定の解析では、2進数表記が必要になる場面がありますよね。DEC2BIN関数は、その変換作業を一瞬で済ませてくれる関数です。

たとえば =DEC2BIN(5) と入力すると、結果は「101」です。10進数の5が、2進数ではこの3桁のビット列で表現されていることがわかります。

関数名の由来

関数名を分解すると、次の意味になります。

  • DEC = Decimal(デシマル、10進数)
  • 2 = to(〜へ)
  • BIN = Binary(バイナリ、2進数)

つまり「DECからBINへ」、10進数を2進数に変換するという意味がそのまま名前になっています。逆変換のBIN2DEC関数とセットで覚えると便利ですよ。

DEC2BIN関数でできること

DEC2BIN関数の特徴をまとめると、次のとおりです。

  • 10進数を2進数の文字列に変換する
  • 変換できる範囲は -512〜511(10ビット符号付き整数)
  • 桁数を指定して先頭にゼロ埋めできる
  • 負の数は2の補数(負の数を表現するコンピュータの方式)で返される
  • ExcelのDEC2BIN関数と仕様が同じで、ファイル共有でもそのまま動作する

NOTE

DEC2BIN関数は逆変換のBIN2DEC関数とセットで使われることが多いです。2進数と10進数を行き来する作業なら、両方覚えておくと効率的ですよ。

DEC2BIN関数の書き方(構文と引数)

基本構文

=DEC2BIN(数値, [桁数])

カッコの中に、変換したい10進数と、必要に応じて桁数を指定します。桁数は省略できますよ。

引数の説明

引数必須/任意説明
数値必須2進数に変換したい10進数。-512〜511の範囲で指定する
桁数任意結果の最小文字数(1〜10)。省略すると必要最小限の桁数で返される

第1引数:変換する10進数

数値に指定できるのは、次の条件を満たす値だけです。

  • -512以上 511以下の整数(10ビット符号付き整数の範囲)
  • 直接入力でもセル参照でもOK
  • 小数を指定した場合は切り捨てて処理される
  • 範囲外は #NUM! エラー

第2引数:有効桁(省略可)

桁数のルールは、次のとおりです。

  • 1〜10の範囲で指定する
  • 結果の桁数より小さい値を指定すると #NUM! エラー
  • 11以上や0以下を指定するとエラーになる
  • 負の数を変換した場合、桁数指定は無視されて常に10桁で返される

WARNING

DEC2BIN関数の戻り値は数値ではなく「文字列」です。そのまま足し算などの計算に使うと、文字列として連結されて誤った結果になります。数値計算する場合はBIN2DECで10進数に戻してから計算してくださいね。

10進数と2進数の対応表

DEC2BIN関数の動きをイメージしやすくするため、小さな値の対応を表にまとめました。計算の内訳も併記しています。

10進数2進数(DEC2BIN)計算内訳
00
111
2102
3112+1
41004
51014+1
810008
1010108+2
1511118+4+2+1
100110010064+32+4
25511111111128+64+32+16+8+4+2+1
511111111111正の最大値(2^9 – 1)

2進数は「2の累乗の足し算」で値が決まります。右から順に1、2、4、8、16…と位が重みを持つイメージですね。

たとえば10進数の「10」は、8と2の組み合わせで作れます。2進数にすると8の位が1、2の位が1で 1010 になりますよ。

TIP

範囲の上限が511なのは、10ビット符号付き整数の仕様だからです。先頭1ビットを符号に使うため、正の数は9ビット(2^9 – 1 = 511)までしか表現できません。

DEC2BIN関数の基本的な使い方

直接入力で変換する

もっともシンプルな使い方から見ていきましょう。

=DEC2BIN(9)

結果は「1001」です。10進数の9は、2進数で 1001(8+1)ですね。

=DEC2BIN(100)

結果は「1100100」です。100 = 64+32+4 の組み合わせが、そのままビット列になっています。

セル参照で変換する

実務では、セルに入っている10進数を変換する場面が多いです。A2のセルに「25」が入っている場合は、次のように書きます。

=DEC2BIN(A2)

結果は「11001」です。25 = 16+8+1 のビット列になりました。

ARRAYFORMULAで一括変換する

スプレッドシートならではの強みが、ARRAYFORMULA関数(範囲を一気に処理する関数)との組み合わせです。

=ARRAYFORMULA(DEC2BIN(A2:A10))

A2からA10までの10進数データを、1つの数式で一気に2進数に変換できます。データが増えても数式をコピーし直す必要がなく、見通しがよくなりますよ。

A列: 10進数B列: 数式結果
9=ARRAYFORMULA(DEC2BIN(A2:A6))1001
101010
1001100100
25511111111
511111111111

TIP

ARRAYFORMULAで桁数指定も効きます。=ARRAYFORMULA(DEC2BIN(A2:A10, 8)) のように書けば、範囲全体を8桁ゼロ埋めで揃えて出力できますよ。

桁数を指定して出力する(ゼロ埋め)

DEC2BIN関数のもう一つの便利な特徴が、第2引数の「桁数」です。これを指定すると、結果の文字数を揃えられますよ。

8ビット固定フォーマット出力

IPアドレスやバイトデータは「8ビット(1バイト)」が基本単位です。DEC2BINで8桁固定にしておくと、読みやすくなります。

=DEC2BIN(5, 8)

結果は「00000101」です。桁数を省略すると「101」とだけ表示されますが、8を指定したことで先頭に「0」が5つ追加されました。

数式結果用途
=DEC2BIN(1, 8)000000018ビット表示
=DEC2BIN(5, 8)000001018ビット表示
=DEC2BIN(255, 8)111111118ビット最大値
=DEC2BIN(1, 10)000000000110ビット表示

ビットフラグ一覧表示への応用

アクセス権限やオプション設定をビットフラグ(各ビットのON/OFFで設定を管理する方式)で管理している場合、ゼロ埋めしておくとフラグの対応が一目でわかります。

=DEC2BIN(A2, 8)

A列に権限の合算値(10進数)が入っていれば、B列に8桁のビット表現を並べられます。

ユーザー権限値ビット表現読み書き実行
管理者700000111
編集者600000110 
閲覧者400000100  

各ビットがどのフラグに対応しているかを表と照らし合わせれば、権限の設定ミスもすぐに見つけられますね。

NOTE

負の数を変換した場合、桁数指定は無視されて常に10桁で返されます。これは2の補数表現に必ず10桁が必要なためです。

符号付き2進数(負の数)の扱い方

DEC2BIN関数は負の数にも対応しています。負の数は「2の補数」という方式で表現されますよ。

変換できる範囲:-512〜511

DEC2BIN関数で扱える数値は、-512以上 511以下の整数です。これは10ビット符号付き整数で表現できる範囲に対応しています。

2進数意味
511111111111正の最大値(9桁)
11正の最小値
00ゼロ
-11111111111負の最大値(全ビット1)
-5121000000000負の最小値(符号ビットのみ1)

負の数は2の補数で表現される

負の数を指定すると、結果は必ず10桁のビット列になります。最上位ビット(左端)が符号ビットとして1になり、残りの9ビットで数値部分を表現する仕組みです。

=DEC2BIN(-1)   → 1111111111
=DEC2BIN(-100) → 1110011100
=DEC2BIN(-256) → 1100000000
=DEC2BIN(-512) → 1000000000

2の補数の作り方は、次の4ステップで手計算できます。-100を例にしてみましょう。

  1. 絶対値100を2進数化する → 1100100
  2. 10桁に拡張する(左を0で埋める) → 0001100100
  3. 全ビットを反転する → 1110011011
  4. 末尾に1を足す → 1110011100

結果はDEC2BIN関数の出力と一致しますね。2の補数は「負の数と正の数を足すと桁あふれしてゼロになる」という性質を利用した表現方法です。

WARNING

負の数では第2引数の桁数指定が無視されます。=DEC2BIN(-5, 4) と書いても、結果は4桁ではなく10桁の 1111111011 が返ります。負の数を扱うときは常に10桁で出力されると覚えておいてくださいね。

エラーの種類と対処法

DEC2BIN関数で発生するエラーは主に #NUM! エラーです。原因のパターンを整理しておきましょう。

エラー原因数式の例対処法
#NUM!変換範囲(-512〜511)を超えた=DEC2BIN(512)数値を範囲内に収める
#NUM!有効桁が結果の桁数より少ない=DEC2BIN(511, 2)桁数を大きくするか省略する
#NUM!桁数に10超または0以下を指定=DEC2BIN(9, 11)桁数を1〜10の範囲で指定する
#VALUE!数値型でない引数を指定=DEC2BIN(“abc”)有効な数値を指定する

#NUM! その1:変換範囲(-512〜511)を超えた場合

もっとも多いパターンが、変換範囲を超えた数値を指定するケースです。

=DEC2BIN(512)  → #NUM! エラー
=DEC2BIN(-513) → #NUM! エラー

10ビットの符号付き整数では、512以上や-513以下の値は表現できません。より大きな数値を2進数で扱いたい場合は、DEC2HEX関数で16進数化してから、必要に応じて各桁を2進数へ分解するなどの工夫が必要ですよ。

#NUM! その2:有効桁が結果の桁数より少ない場合

桁数指定が小さすぎるとエラーになります。

=DEC2BIN(511, 2) → #NUM! エラー

511は2進数で 111111111(9桁)が必要ですが、桁数に2を指定しているため収まりません。桁数を9以上にするか、省略すれば解決します。

先頭の0が消える落とし穴(文字列型指定)

DEC2BIN関数の戻り値は文字列ですが、そのままコピーして他のセルに貼り付けると、表計算の自動判定で先頭の0が消えてしまうことがあります。

=DEC2BIN(5, 8)
→ 00000101(DEC2BINの出力は文字列)
→ コピー&値貼り付けすると 101 になる場合がある

ゼロ埋めを維持したい場合は、貼り付け先のセルの表示形式を「書式なしテキスト」に設定しておくと安全です。あるいはTEXT関数で明示的に文字列化する方法もありますよ。=TEXT(DEC2BIN(5, 8), "@") と書けば、文字列として整形できます。

TIP

大量データで異常値が混じる場合は、IFERROR関数と組み合わせると便利です。=IFERROR(DEC2BIN(A2), "範囲外") と書けば、エラーが出ても表が崩れませんよ。

関連関数との使い分け

Googleスプレッドシートには、2進数・8進数・10進数・16進数を相互に変換する関数が12種類あります。DEC2BIN関数はその1つですよ。

BIN2DEC・DEC2HEX・DEC2OCTとの比較表

DEC2BIN関数とセットで使われることが多い関数を整理しました。

関数名変換方向範囲用途
DEC2BIN(この記事)10進数 → 2進数-512〜511ビットフラグ・IPアドレス可視化
BIN2DEC2進数 → 10進数10桁以内DEC2BINの逆変換
DEC2HEX10進数 → 16進数約 -5.5億〜5.5億大きな数値のコンパクト表示・カラーコード
DEC2OCT10進数 → 8進数約 -5.4億〜5.4億Unixパーミッション・レジスタ値
BASE10進数 → 任意基数2〜36進数汎用的な基数変換

DEC2HEXとDEC2OCTはDEC2BINに比べて扱える数値範囲が広いのが特徴です。大きな数値を2進数で扱いたい場合は、いったんDEC2HEXで16進数化してから各桁を2進数に展開する方法も検討できますよ。

DEC2BINとBIN2DECを組み合わせる

逆変換のBIN2DECと組み合わせると、変換結果を元に戻して検証できます。

=BIN2DEC(DEC2BIN(A2))

A2の10進数を2進数に変換し、さらに10進数に戻すという流れです。元の値と一致すれば、変換処理が正しく行われた確認になりますね。

Excelとの互換性

DEC2BIN関数の仕様はExcelとGoogleスプレッドシートでほぼ同じです。引数名が少し異なる(Excelでは places、Sheetsでは significant_digits)程度で、動作は共通ですよ。

既にExcelのDEC2BIN関数を使った経験があれば、スプレッドシートでも同じ感覚で使えます。ファイルをExcel形式(.xlsx)で保存しても、関数はそのまま動作しますね。

まとめ

スプレッドシートのDEC2BIN関数は、10進数を2進数に変換するエンジニアリング関数です。

ポイントを整理します。

  • 構文は =DEC2BIN(数値, [桁数]) で、桁数は省略可能
  • 変換範囲は -512〜511(10ビット符号付き整数)
  • 桁数を指定すると、先頭に0を補って文字数を揃えられる
  • 負の数は2の補数で表現され、常に10桁で返される(桁数指定は無視)
  • #NUM!エラーは「範囲外」「桁数不足」「桁数10超または0以下」の3パターン
  • ARRAYFORMULAと組み合わせれば、範囲全体を一括変換できる
  • 逆変換にはBIN2DEC関数を使う
  • ExcelのDEC2BIN関数と仕様は共通で、ファイルをExcel形式で保存しても動作する

まずは =DEC2BIN(5, 8)00000101 が返ることを試してみてください。動きがつかめたら、ビットフラグ管理やIPアドレスの可視化にも応用できるようになりますよ。

姉妹記事のBIN2DEC関数BIN2OCT関数BIN2HEX関数もあわせてご覧ください。Excel版の使い方はExcelのDEC2BIN関数の使い方で解説しています。

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