広告

BIN2OCT関数の使い方|2進数を8進数に変換する

2021年6月2日

=BIN2OCT(符号付き2進数(数値)、[有効桁])

bin2oct_sample

BIN2OCT(バイナリィ・トゥ・オクタル)関数は、符号付き2進数(数値)を符号付き8進数に変換する関数です

参考:BIN2OCT関数ドキュメントエディタヘルプ

BIN2OCT関数の使い方. 構文

BIN2OCT関数の構文は以下のとおりです。

=BIN2OCT(符号付き2進数(数値)、[有効桁])

BIN2OCT関数の構文内訳

引数 説明 注釈
数値 必ず指定- 符号付き8進数に変換する10ビットの符号付き2進数を文字列として指定します。 符号付き2進数-10進数に変換する10ビットの符号付き2進数を文字列として指定します。
※符号ビットとは、コンピューターで負の数値を扱うために付加するビット(bit:1か0の2値を区別するために必要な情報量)のこと。0なら正数、1なら負数を表す。
符号付き2進数の最上位ビットは符号ビットです。
BIN2OCT関数では、入力値の正の最大値は0111111111、負の最小値は1000000000です。
符号付き2進数に有効な2進数を指定すると、自動的に適切な文字列の入力値に変換されます。たとえば、BIN2OCT(111111)とBIN2OCT("111111")はどちらも同じ結果「77」を返します。
有効桁 [省略可] - 結果の有効桁数を指定します。 この値が結果に含まれる有効桁数より大きい場合、合計桁数が有効桁に達するまで結果の左側にゼロの数字が付け加えられます。たとえば、BIN2OCT("110011",8)は「00000063」の値を返します。
符号付き2進数の最上位ビットが1の場合(符号付き2進数が 1000000000 以上の場合)、この値は無視されます。

BIN2OCT関数の使い方・実行サンプル

BIN2OCT関数を実行するサンプル。

説明 数値 数式
2進数の110010を8進数に変換します。 110010 =BIN2OCT(B2)
2進数の111111111を8進数に変換します。 111111111 =BIN2OCT(B3)

各進数をBIN2OCT関数で算出した結果。

説明 数値 数式 結果
2進数の110010を8進数に変換します。 110010 =BIN2OCT(B2) 62
2進数の111111111を8進数に変換します。 111111111 =BIN2OCT(B3) 777

GIFで↓

bin2oct_sample

BIN2OCT関数の実行サンプル結果

画像でBIN2OCT実行サンプル結果を確認↓

bin2oct_kekka

BIN2OCT関数 × GASの使い方・サンプル

BIN2OCT関数をGASで利用する際の、かんたんなサンプルを作成してみました。

実装する表のサンプル。

置換対象の数値 置換後 結果
デフォは空白 デフォは空白 デフォは空白

実装するGAS

function BIN2OCT() {
var ss,sht,lastrw,val01,val02
ss = SpreadsheetApp.getActiveSpreadsheet();
sht = ss.getActiveSheet();
lastrw = sht.getLastRow();
Logger.log(lastrw);
val01 = Browser.inputBox('8進数に置換する2進数「0か1(10ビットまで)」と、\n任意で桁数を入力して下さい',Browser.Buttons.OK_CANCEL);
if(val01 == "cancel"){
Browser.msgBox("処理を中止しました");
return;
} else {
sht.getRange("A2").setValue("8進数に置換する数値は\n「"+val01+"」です");
}
// BIN2OCT関数をB2セルにセット
val02 = sht.getRange("B2").setFormula('=BIN2OCT('+val01+')');
 val03 =val02.getValue();
sht.getRange("C2").setValue("8進数は\n「"+val03+"」です");
}

実行結果をGIFで

bi2oct×gas

OYAKUN
OYAKUN
inputBoxへ2進数の置換したい数値と桁数を入力することで、8進数へ置換することができます。(入力しなければキャンセルに)

BIN2OCT関数を使うときの注意点

注意. 0と1以外の値を指定すると#NUM!エラーを返す

BIN2OCT関数は、引数に数値以外の値を指定すると#NUM!エラーを返します。

以下にサンプルを記載します。

数値 数式 結果
1001a =BIN2OCT(A2) #NUM!

bin2oct_error1

OYAKUN
OYAKUN
BIN2OCT関数に設置するA2セルの値に半角英字「a」を入れた時、BIN2OCT関数の算出結果は#NUM!を返していることが分かります。
1と0以外の数値、例えば2進数ではない「2」や「3」を数値に指定しても#NUM!が返されます

注意2. 数値が10文字以上だとNUM!エラーを返す

BIN2OCT関数では、数値に10文字(10ビット)以上の数値を指定した場合、#NUM!エラーを返します

以下にサンプルを記載します。

数値 数式 結果
101010101010 =BIN2OCT(A2) #NUM!

bin2oct_error2

必要な桁数が指定した有効桁よりも大きい場合も「#NUM!エラー」を返します。

OYAKUN
OYAKUN
A2セルの数値が10文字(10ビット)以上の12文字で指定されたため、BIN2OCT関数の結果は#NUM!を返していることが分かります。

注意3. BIN2OCTの値を数式に含むと誤りを返す可能性がある

BIN2OCT関数では求めた値8進数を、数式に含めると10進数の計算結果を返します

数値 BIN2OCT↓ 数値 BIN2OCT
+ 数値
10001 21 10 31

bin2oct_eorror3

数値が負の場合、桁数の値は無視されて10桁の8進数が帰ります。

OYAKUN
OYAKUN
8進法の計算としては誤りの結果となりました。

BIN2OCT関数の使い方. Excelとスプシの違い

BIN2OCT関数は、ExcelとGoogleスプレッドシートで基本的な使い方に相違はありません

以下にGoogleスプレッドシートとExcelの解説についてまとめました。

スプレッドシート Excel
すべての2進数の値と同様に0と1の数字のみが有効です。BIN2OCTでこれ以外の数字を指定すると、#NUM!エラーが返されます。 数値に2進数以外の値、または10文字 (10 ビット) より多くの値を指定すると、エラー値 #NUM!が返されます。
数数値が負の数である場合、桁数の値は無視され、10桁の8進数が返されます。
必要な桁数が指定した有効桁よりも大きい場合、#NUM!エラーが返されます。 計算結果の桁数が指定した桁数の値よりも大きくなる場合、エラー値NUM!が返されます。
桁数に整数以外の値を指定すると、小数点以下は切り捨てられます。
BIN2OCT関数の結果を計算に使用する場合は、結果が8進数であることに注意してください。Google スプレッドシートでは結果が自動変換されるため、セルA2に111(2進数1001001と等しい8進数)を含み、B2に=A2+9などの数式を含む場合、結果は120となり8進法の計算では誤りとなります。 桁数に数値以外の値を指定すると、エラー値#VALUE!が返されます。
桁数に負の数を指定すると、エラー値 #NUM!が返されます。

BIN2OCT関数はExcelでは

  • 整数以外の値を数値に指定する
  • 桁数に数値以外を指定する

以上の条件の時にエラー値が#VALUE!になるという点が、Googleスプレッドシートとの決定的な違いでしょうか。

また桁数に整数以外の値を指定することで、小数点以下は切捨てになる処理はGoogleスプレッドシート・Excelともに同様です。

OYAKUN
OYAKUN
以上よりBIN2OCT関数の使い方は、EXCEL・Googleスプレッドシートともに同じと考えて良さそうです。

BIN2OCT関数の使い方 まとめ

BIN2OCT関数の使い方でした。 有効に利用するには、

  • 数値には0または1を指定する
  • 数値は10文字(ビット)以上入れない
  • テキストを指定しない
  • 桁数に整数以外の値を指定しない
  • 桁数にマイナスを指定しない

といった感じですね。

BIN2OCT関数を使うことで、2進数から8進数へすぐに置換することができます。

OYAKUN
OYAKUN
BIN2DEC関数やBIN2HEX関数と組み合わせることで、8進数や16進数も求めることができますね!

関連記事: BIN2HEX関数の使い方|2進数を16進数に変換する
関連記事: BIN2DEC関数の使い方|2進数を10進数表記へ変換する
関連記事: BETAINV関数の使い方|β分布区間に対しβ累積分布の逆関数の値を返す