「2進数のデータを8進数に直したいけど、手計算は面倒…」
Excelで2進数を扱う機会は意外とあります。Unixのファイルパーミッション設定など、8進数が必要な場面もさまざまです。
でも2進数から8進数への手計算は、3桁ずつ区切って変換する作業が必要です。桁数が増えるとミスしやすいですよね。
そんなときに便利なのがBIN2OCT関数です。2進数を入力するだけで、8進数に一発変換してくれます。
この記事では、BIN2OCT関数の基本の使い方からエラー対策、OCT2BIN関数との違いまで解説します。
BIN2OCT関数とは
BIN2OCT関数は、2進数を8進数に変換するExcelの関数です。
2進数は「0」と「1」だけで数を表す方法です。コンピュータの内部ではすべてのデータが2進数で処理されています。
一方、8進数は0から7までの数字で数を表す方法です。Unixのファイルパーミッション(755や644など)で使われることが多いです。
BIN2OCT関数を使えば、この変換を自動で行えます。
読み方と名前の由来
読み方は「ビン・ツー・オクト」です。
- BIN = Binary(バイナリ、2進数)
- 2 = to(〜へ)
- OCT = Octal(オクタル、8進数)
つまり「2進数から8進数へ」という意味です。関数名がそのまま機能を表しています。
対応バージョン
Excel 2007以降は標準搭載されています。アドインの追加は不要です。
| バージョン | 対応状況 |
|---|---|
| Excel 2007以降 | 標準搭載(そのまま使える) |
| Excel 2003以前 | 分析ツールアドインの有効化が必要 |
| Microsoft 365 | 対応(Windows / Mac / Web) |
NOTE
現在使われているほとんどのExcelで、追加設定なしで利用できます。
BIN2OCT関数の書式と引数
基本構文は次のとおりです。
=BIN2OCT(数値, [桁数])
引数は「数値」と「桁数」の2つです。桁数は省略できます。
| 引数 | 必須/任意 | 説明 |
|---|---|---|
| 数値 | 必須 | 8進数に変換したい2進数。0と1のみで構成された値を指定する |
| 桁数 | 任意 | 結果の文字数を指定する。省略すると最小の桁数で表示される |
引数「数値」の指定ルール
数値には、次のルールがあります。
- 使える文字は「0」と「1」のみ
- 最大10桁(10ビット)まで指定できる
- 直接入力でもセル参照でも指定できる
0と1以外の文字を含めるとエラーになります。「2」や「A」などは指定できません。
WARNING
数値を直接入力するときは、文字列として扱われます。セルに入力する場合は、表示形式を「文字列」にしておくと安全です。先頭の0が消えるのを防げます。
引数「桁数」の使い方
桁数を指定すると、結果の文字数を揃えられます。不足分は先頭に「0」が追加されます。
=BIN2OCT(1010, 4)
結果は「0012」です。桁数を省略した場合は「12」とだけ表示されます。
桁数の指定ルールは次のとおりです。
- 正の整数で指定する
- 小数を指定した場合は、小数点以下が切り捨てられる
- 結果の桁数より小さい値を指定するとエラーになる
- 負の数を変換した場合は、桁数に関係なく10桁で返される
TIP
データの表示形式を揃えたいときに桁数指定が役立ちます。たとえば「桁数: 3」を指定すれば、1桁の結果も「001」のように3桁で統一できます。
変換できる範囲
BIN2OCT関数が扱える入力値の範囲は、10桁の2進数です。出力される8進数の範囲は次のとおりです。
- 正の最大値: 0111111111(2進数) → 777(8進数) → 10進数で511
- 負の最小値: 1000000000(2進数) → 7777777000(8進数) → 10進数で-512
10桁を超える2進数は指定できません。エラーになります。
BIN2OCT関数の使い方(基本例)
正の2進数を変換する
まずはシンプルな例からです。セルに直接入力してみましょう。
=BIN2OCT(101011)
結果は「53」です。2進数の101011は、8進数の53に対応します。
変換の仕組みを確認しておきましょう。2進数を右から3桁ずつ区切り、それぞれを8進数に変換します。
| 上位3桁 | 下位3桁 |
|---|---|
| 101 | 011 |
| → 5 | → 3 |
合わせると「53」になります。
セル参照を使うこともできます。A1に「1010」が入っているとします。
=BIN2OCT(A1)
結果は「12」です。参照先のセルの値を変えれば、結果も自動で更新されます。
よく使う変換例をまとめておきます。
| 入力(2進数) | 出力(8進数) | 10進数での値 |
|---|---|---|
| 1 | 1 | 1 |
| 111 | 7 | 7 |
| 1000 | 10 | 8 |
| 1010 | 12 | 10 |
| 1100100 | 144 | 100 |
| 111111111 | 777 | 511 |
桁数を指定して変換する
桁数を指定すると、結果の表示を揃えられます。
=BIN2OCT(1010, 4)
結果は「0012」です。4桁になるように先頭に「0」が追加されます。
桁数指定はデータの一覧表を作るときに便利です。桁数がバラバラだと見づらいですよね。
| 数式 | 結果 | 説明 |
|---|---|---|
| =BIN2OCT(1, 3) | 001 | 3桁に揃える |
| =BIN2OCT(1010, 4) | 0012 | 4桁に揃える |
| =BIN2OCT(111111111, 4) | 0777 | 4桁に揃える |
負の数(2の補数)を変換する
BIN2OCT関数は「2の補数」表現にも対応しています。
2の補数とは、コンピュータで負の数を表す仕組みです。10桁の2進数で、最上位ビット(左端)が「1」の場合は負の数として解釈されます。
=BIN2OCT(1111111111)
結果は「7777777777」です。10桁すべてが1の場合、10進数では-1に対応します。
=BIN2OCT(1000000000)
結果は「7777777000」です。これが負の最小値(-512)です。
NOTE
9桁以下で最上位が1の場合(例: 111111111)は正の数として扱われます。2の補数は10桁の場合のみ適用されます。たとえば
=BIN2OCT(111111111)は「777」を返します。
負の数の代表的な変換例です。
| 入力(2進数) | 出力(8進数) | 10進数での値 |
|---|---|---|
| 1111111111 | 7777777777 | -1 |
| 1111111110 | 7777777776 | -2 |
| 1111110000 | 7777777760 | -16 |
| 1000000000 | 7777777000 | -512 |
負の数の場合は、桁数を指定しても10桁で返されます。
よくあるエラーと対処法
BIN2OCT関数で発生するエラーと対処法を表にまとめました。
| エラー | 原因 | 数式の例 | 対処法 |
|---|---|---|---|
| #NUM! | 10桁を超えている | =BIN2OCT(11111111111) | 10桁以内に収める |
| #NUM! | 0と1以外の文字を含む | =BIN2OCT(102) | 0と1だけで構成する |
| #NUM! | 桁数が結果より小さい | =BIN2OCT(111111111, 1) | 桁数を大きくするか省略する |
| #VALUE! | 数値型でない引数を指定した | =BIN2OCT(“ABC”) | 数値として有効な値を指定する |
もっとも多いのは「0と1以外の文字を含む」パターンです。10進数の「102」を2進数と間違えて入力するケースですね。
=BIN2OCT(102)
この数式は#NUM!エラーになります。「2」は2進数では使えない文字です。
桁数の指定ミスにも注意しましょう。結果の桁数より小さい値を指定するとエラーです。
=BIN2OCT(111111111, 1)
結果は「777」(3桁)ですが、桁数に1を指定しているのでエラーになります。
TIP
エラーを回避したい場合は、IFERROR関数と組み合わせましょう。
=IFERROR(BIN2OCT(A1), "変換エラー")と書けば、エラー時に任意のメッセージを表示できます。
OCT2BIN関数との使い分け(逆変換)
BIN2OCT関数の逆方向の変換を行うのがOCT2BIN関数です。
| 関数 | 変換方向 | 入力 | 出力 |
|---|---|---|---|
| BIN2OCT | 2進数 → 8進数 | 0と1の数値(最大10桁) | 8進数(最大10桁) |
| OCT2BIN | 8進数 → 2進数 | 8進数の値 | 0と1の数値(最大10桁) |
それぞれの使いどころを整理します。
- BIN2OCT: 2進数のデータを8進数で表示したいとき
- OCT2BIN: 8進数の値を2進数に分解したいとき
両方を組み合わせると、変換の確認ができます。
=OCT2BIN(BIN2OCT(A1))
この数式はA1の2進数を8進数に変換し、再び2進数に戻します。元の値と一致すれば、変換が正しいことを確認できますよ。
BIN2OCT関数の実務活用パターン
Unixファイルパーミッションの確認
Unixのファイルパーミッションは8進数で表記します。BIN2OCT関数を使えば、2進数のビットパターンから8進数に変換できます。
パーミッションは「読み取り(r)」「書き込み(w)」「実行(x)」の3ビットで構成されます。所有者・グループ・その他の3組で計9ビットです。
=BIN2OCT(111101101)
結果は「755」です。所有者はすべて許可(rwx=7)、グループと他は読み取り・実行のみ(r-x=5)という設定です。
| 2進数(9ビット) | 8進数 | パーミッション表記 |
|---|---|---|
| 111101101 | 755 | rwxr-xr-x |
| 110100100 | 644 | rw-r–r– |
| 111000000 | 700 | rwx—— |
他のBIN系関数との組み合わせ
BIN2OCT関数で得た8進数を、さらに別の進数に変換することもできます。
たとえばBIN2OCT + BIN2DECを並べて、同じ2進数を複数の進数で一覧表示する使い方です。
| セル | 数式 | 結果 | 説明 |
|---|---|---|---|
| B1 | =BIN2OCT(A1) | 53 | 8進数表示 |
| C1 | =BIN2DEC(A1) | 43 | 10進数表示 |
| D1 | =BIN2HEX(A1) | 2B | 16進数表示 |
A1に「101011」を入力すれば、3種類の進数を同時に確認できます。
他の進数変換関数との比較
Excelには2進数・8進数・10進数・16進数を相互変換する関数が12種類あります。BIN2OCT関数はその1つです。
| 関数名 | 変換方向 |
|---|---|
| BIN2DEC | 2進数 → 10進数 |
| BIN2OCT ※この記事 | 2進数 → 8進数 |
| BIN2HEX | 2進数 → 16進数 |
| OCT2BIN | 8進数 → 2進数 |
| OCT2DEC | 8進数 → 10進数 |
| OCT2HEX | 8進数 → 16進数 |
| DEC2BIN | 10進数 → 2進数 |
| DEC2OCT | 10進数 → 8進数 |
| DEC2HEX | 10進数 → 16進数 |
| HEX2BIN | 16進数 → 2進数 |
| HEX2OCT | 16進数 → 8進数 |
| HEX2DEC | 16進数 → 10進数 |
関数名の命名規則は「変換元の略称 + 2 + 変換先の略称」です。BIN2OCTなら「BIN(2進数) → OCT(8進数)」ですね。このルールを覚えておけば、どの関数がどの変換をするか迷いません。
まとめ
BIN2OCT関数は、2進数を8進数に変換する関数です。
ポイントを整理します。
- 構文は
=BIN2OCT(数値, [桁数])で、桁数は省略可能 - 入力は0と1だけの2進数。最大10桁まで対応
- 桁数を指定すると、先頭に0を追加して表示を揃えられる
- 10桁の場合、最上位ビットが1なら負の数(2の補数)として扱う
- #NUM!エラーの原因は「10桁超」「0と1以外の文字」「桁数不足」
- 逆変換にはOCT2BIN関数を使う
- Excel 2007以降で標準搭載。アドイン不要
まずは =BIN2OCT(101011) で「53」が返ることを試してみてください。
