「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) | 計算内訳 |
|---|---|---|
| 0 | 0 | – |
| 1 | 1 | 1 |
| 2 | 10 | 2 |
| 3 | 11 | 2+1 |
| 4 | 100 | 4 |
| 5 | 101 | 4+1 |
| 8 | 1000 | 8 |
| 10 | 1010 | 8+2 |
| 15 | 1111 | 8+4+2+1 |
| 100 | 1100100 | 64+32+4 |
| 255 | 11111111 | 128+64+32+16+8+4+2+1 |
| 511 | 111111111 | 正の最大値(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 |
| 10 | ↓ | 1010 |
| 100 | ↓ | 1100100 |
| 255 | ↓ | 11111111 |
| 511 | ↓ | 111111111 |
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) | 00000001 | 8ビット表示 |
| =DEC2BIN(5, 8) | 00000101 | 8ビット表示 |
| =DEC2BIN(255, 8) | 11111111 | 8ビット最大値 |
| =DEC2BIN(1, 10) | 0000000001 | 10ビット表示 |
ビットフラグ一覧表示への応用
アクセス権限やオプション設定をビットフラグ(各ビットのON/OFFで設定を管理する方式)で管理している場合、ゼロ埋めしておくとフラグの対応が一目でわかります。
=DEC2BIN(A2, 8)
A列に権限の合算値(10進数)が入っていれば、B列に8桁のビット表現を並べられます。
| ユーザー | 権限値 | ビット表現 | 読み | 書き | 実行 |
|---|---|---|---|---|---|
| 管理者 | 7 | 00000111 | ✓ | ✓ | ✓ |
| 編集者 | 6 | 00000110 | ✓ | ✓ | |
| 閲覧者 | 4 | 00000100 | ✓ |
各ビットがどのフラグに対応しているかを表と照らし合わせれば、権限の設定ミスもすぐに見つけられますね。
NOTE
負の数を変換した場合、桁数指定は無視されて常に10桁で返されます。これは2の補数表現に必ず10桁が必要なためです。
符号付き2進数(負の数)の扱い方
DEC2BIN関数は負の数にも対応しています。負の数は「2の補数」という方式で表現されますよ。
変換できる範囲:-512〜511
DEC2BIN関数で扱える数値は、-512以上 511以下の整数です。これは10ビット符号付き整数で表現できる範囲に対応しています。
| 値 | 2進数 | 意味 |
|---|---|---|
| 511 | 111111111 | 正の最大値(9桁) |
| 1 | 1 | 正の最小値 |
| 0 | 0 | ゼロ |
| -1 | 1111111111 | 負の最大値(全ビット1) |
| -512 | 1000000000 | 負の最小値(符号ビットのみ1) |
負の数は2の補数で表現される
負の数を指定すると、結果は必ず10桁のビット列になります。最上位ビット(左端)が符号ビットとして1になり、残りの9ビットで数値部分を表現する仕組みです。
=DEC2BIN(-1) → 1111111111
=DEC2BIN(-100) → 1110011100
=DEC2BIN(-256) → 1100000000
=DEC2BIN(-512) → 1000000000
2の補数の作り方は、次の4ステップで手計算できます。-100を例にしてみましょう。
- 絶対値100を2進数化する →
1100100 - 10桁に拡張する(左を0で埋める) →
0001100100 - 全ビットを反転する →
1110011011 - 末尾に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アドレス可視化 |
| BIN2DEC | 2進数 → 10進数 | 10桁以内 | DEC2BINの逆変換 |
| DEC2HEX | 10進数 → 16進数 | 約 -5.5億〜5.5億 | 大きな数値のコンパクト表示・カラーコード |
| DEC2OCT | 10進数 → 8進数 | 約 -5.4億〜5.4億 | Unixパーミッション・レジスタ値 |
| BASE | 10進数 → 任意基数 | 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関数の使い方で解説しています。
