スプレッドシートのBIN2DEC関数の使い方|2進数を10進数に変換

スポンサーリンク

「機器から出力されたログが2進数のまま並んでいて、集計がまったく進まない…」

エンジニアチームから受け取った資料が2進数ばかりで、困った経験はありませんか?ネットワーク設定の確認やセンサーデータの処理では、2進数と10進数の変換がよく登場します。

手計算で変換するのは、桁数が増えるほど大変です。しかも2進数特有の「符号付き表現」が絡むと、さらに複雑になります。

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

この記事では、BIN2DEC関数の基本から符号付き2進数の扱い方、エラー対処法、関連関数との使い分けまでまとめて解説します。

BIN2DEC関数とは?

BIN2DEC関数(読み方: ビントゥデック / バイナリ・トゥ・デシマル)は、2進数を10進数に変換するエンジニアリング関数です。

2進数は「0」と「1」だけで数値を表す方法です。コンピュータの内部ではすべてのデータがこの形式で処理されています。一方、10進数は普段私たちが使っている「0から9」までの数字で表す方法ですね。

BIN2DEC関数を使えば、この変換が一瞬で終わります。たとえば =BIN2DEC("1010") と入力すると、結果は「10」です。

関数名の由来

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

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

つまり「BINからDECへ」、2進数を10進数に変換するという意味がそのまま名前になっています。基数変換系の関数はすべて同じ命名ルールです。

BIN2DEC関数でできること

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

  • 0と1で構成された2進数を10進数に変換する
  • 最大10桁(10ビット)の2進数に対応する
  • 符号付き2進数(負の数)にも対応する
  • Excelとの互換性があり、ファイルのやり取りでもそのまま使える

NOTE

BIN2DEC関数はGoogleスプレッドシートのエンジニアリング関数カテゴリに属します。全バージョンで追加設定なしに利用できます。

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

基本構文

=BIN2DEC(数値)

カッコの中に、変換したい2進数を1つだけ入れます。非常にシンプルな関数ですよ。

引数の説明

引数必須/任意説明
数値必須10進数に変換したい2進数。0と1のみで構成された値を指定する

引数は1つだけです。他の基数変換関数と異なり、桁数を指定する引数はありません。

引数のルール

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

  • 使える文字は「0」と「1」だけ
  • 最大10桁(10ビット)まで
  • 直接入力でもセル参照でもOK
  • 文字列として指定する場合はダブルクォーテーションで囲む

0と1以外の文字が含まれていると、エラーになります。「2」や「A」は2進数の文字として使えません。

WARNING

直接入力で =BIN2DEC(00101) のように先頭に0を付けると、スプレッドシートが10進数として解釈し、先頭の0が消えてしまうことがあります。先頭0が意味を持つ場合は "00101" と文字列で指定するのが安全です。

2進数と10進数の対応表

BIN2DEC関数の動きをイメージしやすくするため、代表的な対応を表にまとめました。

2進数10進数計算の内訳
00
112^0 = 1
1022^1 = 2
1132^1 + 2^0 = 3
10042^2 = 4
10152^2 + 2^0 = 5
11062^2 + 2^1 = 6
11172^2 + 2^1 + 2^0 = 7
100082^3 = 8
1010102^3 + 2^1 = 10
1111152^3 + 2^2 + 2^1 + 2^0 = 15

2進数の各桁は、右から順に2の0乗、2の1乗、2の2乗…という重みを持ちます。その桁が「1」なら重みを足していくだけで10進数の値になりますよ。

BIN2DEC関数の基本的な使い方

2進数を直接入力する

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

=BIN2DEC("1010")

結果は「10」です。2進数の 1010 は、10進数では 10 にあたります。

=BIN2DEC("11111111")

結果は「255」です。8桁すべてが1の場合、10進数では 255 になります。これは1バイト(8ビット)の最大値ですね。

セル参照で2進数を変換する

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

=BIN2DEC(A2)

結果は「25」です。2進数の 11001 は、10進数の 25 にあたります。

複数のセルをまとめて変換する

複数の2進数データをまとめて変換したい場合は、通常どおり数式を下方向にドラッグしてコピーすればOKです。

A列: 2進数B列: 数式結果(10進数)
1=BIN2DEC(A2)1
101=BIN2DEC(A3)5
1010=BIN2DEC(A4)10
11001=BIN2DEC(A5)25
1100100=BIN2DEC(A6)100

TIP

ARRAYFORMULAと組み合わせて =ARRAYFORMULA(BIN2DEC(A2:A6)) と書けば、1つの数式で範囲全体を一括変換できます。スプレッドシートならではの書き方ですね。

符号付き2進数(10桁の場合)の扱い方

BIN2DEC関数は「符号付き2進数」にも対応しています。10桁の2進数を指定したときだけ、最上位ビット(左端)が符号ビットとして解釈されます。

符号ビットの仕組み

10桁の2進数では、各桁の意味が次のようになります。

10桁目(左端)9桁目〜1桁目
役割符号ビット(0=正、1=負)数値部分
例: 正の最大0111111111(511)
例: -11111111111
例: 負の最小1000000000(-512)

10桁目が「1」の場合は負の数として扱われるため、2の補数で計算されます。これはコンピュータ内部で負の数を扱う一般的な方式です。

符号付き2進数の変換例

具体例を見ていきましょう。

=BIN2DEC("1111111111")

結果は「-1」です。10桁すべてが1の場合、2の補数では -1 を表します。

=BIN2DEC("1000000000")

結果は「-512」です。これが10ビットの符号付き2進数で表現できる最小値です。

=BIN2DEC("0111111111")

結果は「511」です。こちらが表現できる最大値になります。

9桁以下は符号ビットが無視される

9桁以下の2進数では、最上位が1でも正の数として扱われます。

=BIN2DEC("111111111")
→ 511(9桁なので正の数)

=BIN2DEC("11111111")
→ 255(8桁なので正の数)

同じ「1が並んだ形」でも、桁数によって結果が変わる点に注意してくださいね。

NOTE

符号付き2進数の扱いはExcelのBIN2DEC関数と完全に同じです。Googleスプレッドシートで作成した数式は、Excelにそのままコピーしても動作します。

よくあるエラーと対処法

BIN2DEC関数で発生するエラーは主に2種類です。原因と対処法を表にまとめました。

エラー原因数式の例対処法
#NUM!10桁を超える2進数を指定した=BIN2DEC(“11111111111”)10桁以内に収める
#NUM!0と1以外の文字が含まれる=BIN2DEC(“102”)0と1だけで構成する
#VALUE!無効な引数を指定した=BIN2DEC(“ABC”)数値または数値文字列を指定する

#NUM!エラーの例

実務で一番多いのが、10進数を2進数と間違えて入力するケースです。

=BIN2DEC("102")
→ #NUM! エラー

10進数の「102」をそのまま指定してしまったパターンです。「2」は2進数では使えない文字ですね。

桁数オーバーも見落としがちです。

=BIN2DEC("11111111111")
→ #NUM! エラー

11桁を指定しているため、エラーになります。10桁以内に修正する必要があります。

IFERRORでエラー処理

大量のデータを変換する場合、元データにノイズが混ざることもありますよね。IFERRORと組み合わせてエラー時の表示をカスタマイズしておくと親切です。

=IFERROR(BIN2DEC(A2), "変換不可")

これでA2が2進数として無効な値でも、エラーではなく「変換不可」というメッセージが表示されます。

TIP

入力値が2進数として有効かを事前に判定したい場合は =IF(REGEXMATCH(A2, "^[01]{1,10}$"), BIN2DEC(A2), "無効") のようにREGEXMATCH関数と組み合わせるのも便利です。スプレッドシートの正規表現関数が強力に働きますよ。

関連する基数変換関数との使い分け

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

BIN2DECから派生する関数

BIN2DEC関数の「入力側が2進数」「出力側が10進数」を入れ替えたり、変換先を変えたりするバリエーションがあります。

関数名変換方向用途
BIN2DEC(この記事)2進数 → 10進数2進数ログを人間が読める形に変換
BIN2HEX2進数 → 16進数2進数をコンパクトな16進数表記にする
BIN2OCT2進数 → 8進数2進数を8進数表記にする
DEC2BIN10進数 → 2進数BIN2DECの逆変換。10進数を2進数で確認する

12種類の基数変換関数の全体像

基数変換関数の命名ルールは「変換元 + 2 + 変換先」です。対応表を頭に入れておくと、必要な関数をすぐに見つけられます。

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

たとえば「2進数を16進数にしたい」なら、BIN(2進数)+ 2 + HEX(16進数)で「BIN2HEX関数」になる、という具合ですね。

BIN2DECとDEC2BINを組み合わせる

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

=DEC2BIN(BIN2DEC(A2))

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

BIN2DEC関数をスプレッドシートで使うときのポイント

Excelとの違いはほぼない

BIN2DEC関数の仕様はExcelとGoogleスプレッドシートでほぼ同じです。引数や返り値の範囲、符号付き2進数の扱いも共通しています。

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

ARRAYFORMULAで配列処理ができる

スプレッドシートならではの強みは、ARRAYFORMULA関数との組み合わせです。

=ARRAYFORMULA(BIN2DEC(A2:A100))

A2からA100までの2進数データを一気に10進数に変換できます。Excelでも配列数式は使えますが、スプレッドシートのほうがシンプルに書けるのが特徴です。

REGEXMATCHで入力値を検証できる

スプレッドシートは正規表現関数が充実しています。BIN2DECの前に入力値チェックを挟むと、エラーを未然に防げます。

=IF(REGEXMATCH(A2, "^[01]{1,10}$"), BIN2DEC(A2), "無効な2進数")

0と1だけで構成され、かつ10桁以内の文字列だけを変換対象にする、という数式です。大量データの前処理に便利ですね。

まとめ

BIN2DEC関数は、2進数を10進数に変換するエンジニアリング関数です。

ポイントを整理します。

  • 構文は =BIN2DEC(数値) のシンプルな1引数
  • 変換できる範囲は -512 〜 511(10ビット符号付き整数の範囲)
  • 10桁の場合は符号付き2進数として扱われ、最上位ビットが符号ビットになる
  • #NUM!エラーの原因は「10桁超」または「0と1以外の文字」
  • 逆変換にはDEC2BIN関数を使う
  • ExcelのBIN2DEC関数と仕様は共通で、ファイルをExcel形式で保存しても動作する

まずは =BIN2DEC("1010") で「10」が返ることを試してみてください。関数の動きがつかめたら、符号付き2進数や関連関数も使いこなせるようになりますよ。

基数変換の姉妹記事として、Excelでの使い方を詳しく解説したExcelのBIN2DEC関数の使い方もあわせてご覧ください。

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