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