広告

BITAND関数の使い方| 数値2つのビット単位の論理積を返す

2021年6月18日

=BITAND(値1,値2)

BITAND_SAMPLE

BITAND(ビット・アンド)関数は、10進数を2進数に変えて桁ごとにAND計算を行う関数です。

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

BITAND関数の使い方. 構文

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

=BITAND(値1,値2)

BITAND関数の構文内訳

引数 説明 説明
値1 1つ目の数値。 必ず指定- 10進表記の0以上の数値を指定します。
値2 2つ目の数値。 必ず指定- 10進表記の0以上の数値を指定します。

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

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

BITAND関数にて

  • 数値1に6を
  • 数値2に2を

設定したときの結果を求めます。

項目 10進数 2進数
数値1 6 =DEC2BIN(B2,4)
数値2 2 =DEC2BIN(B3,4)
BITANDの計算結果 =BITAND(B2,B3) =DEC2BIN(B4,4)

BITAND関数で算出した結果。

項目 10進数 2進数
数値1 6 0110
数値2 2 0010
BITANDの計算結果 2 0010

GIFで↓

BITAND_SAMPLE

OYAKUN
OYAKUN
DEC2BIN関数で10進数を2進数として表示すると、BITAND関数の結果が分かりやすいですね。

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

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

BITAND_KEKKA

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

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

実装する表のサンプル。

成功数 試行回数 成功率 成功する確率
デフォは空白 デフォは空白 デフォは空白 デフォは空白

実装するGAS

function bitand() {
var ss,sht,val01,val02,val03,val04,array
ss = SpreadsheetApp.getActiveSpreadsheet();
sht = ss.getActiveSheet();
val01 = Browser.inputBox('数値1を入力してください。(0以上の値)',Browser.Buttons.OK_CANCEL);
val02 = Browser.inputBox('数値2を入力してください。(0以上の値)',Browser.Buttons.OK_CANCEL);
if(val01 == "cancel"|| val02 == "cancel"){
Browser.msgBox("処理を中止しました");
return;
} else {
array = [[val01,val02]];
sht.getRange(2,2,1,2).setValues(array);
// BITAND関数をセット
val03 = sht.getRange("D2").setFormula('=BITAND('+val01+','+val02+')');
val04 = val03.getValue();
Browser.msgBox("ビット値は「"+val04+"」です");
}
}

実行結果をGIFで

BITAND×GAS

OYAKUN
OYAKUN
inputBoxへ値1・値2を入力することで、D2セルへBITANDの論理積を返しています。(入力しなければキャンセルに)

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

注意. 値1・値2に0未満を指定すると#NUM!エラーを返す

BITAND関数は、値1・値2に0未満を指定すると#NUM!エラーを返します。

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

数値1 数値2 BITAND結果
調べる値 -1 2 #NUM!

BITAND_error1

OYAKUN
OYAKUN
B2に-1といった0未満を数値を指定したことで、D2のBITAND関数の算出結果が#NUM!エラーになっていることが分かります。

注意2. 引数が2^48(-1)より大きい値だと#NUM!エラーを返す

「^」ハット・キャレットとは

ハット・キャレットは、べき乗計算を行う演算子です。

例:2^48は、2の48乗を表します。

BITAND関数では、引数が2^48(-1)より大きい値だと#NUM!エラーを返します

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

数値1 数値2 BITAND結果
調べる値 =2^48 2 #NUM!

BITAND_error2

OYAKUN
OYAKUN
B2セルの値を「=2^47」から「=2^48」へ変更したところ、D2セルのBITAND関数の結果が#NUM!エラーに変わったことが分かります。

注意3. 引数に数値以外の値を指定すると#VALUE!エラーを返す

BITAND関数では、成功数・試行回数・成功率に数値以外を指定すると#VALUE!エラーを返します

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

数値1 数値2 BITAND結果
調べる値 2a 2 #VALUE!

BITAND_error3

OYAKUN
OYAKUN
B2セルに2aと数値以外の値を指定したところ、D2セルのBITAND関数の算出結果が#VALUE!エラーを返していることが分かります。

BITAND関数の使い方. ExcelとGoogleスプレッドシートとの違い

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

強いて上げれば、注意1のエラーを返す値が以下のように異なるくらいでしょうか。

  • スプレッドシートだと#NUM!エラー
  • ExcelだとVALUE!エラー

他に目立って異なる使い方の違いは見受けられません。

ただし、Googleスプレッドシート側ではBIN2DEC関数と組み合わせて使うことを推奨していました。

2 進数の数値 “1110” と “0100” のビット単位のブール型 AND 演算では、2 進数の “0100”、10 進数では 4 となります。

A B
1 数式 結果
2 =BITAND(BIN2DEC("1110"), BIN2DEC("0100")) 4

BIN2DEC関数は、符号付き2進数を10進数へ変換する関数です。

参考|BIN2DEC関数の使い方|2進数を10進数表記へ変換する

OYAKUN
OYAKUN
BITAND関数の使い方は、EXCEL・Googleスプレッドシートともに同じと考えて良さそうです。スプレッドシート側で紹介されているように、BITAND×BIN2DECで算出してみるのも面白そうですね。

BITAND関数の使い方 まとめ

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

  • 数値に0未満を指定しない
  • 数値に2^48(-1)を指定しない
  • 数値にテキストなど指定しない

といった感じですね。

BIN2DEC関数と合わせて使うことで、2つの数値のビットごとの論理積についてより理解が進むのではないでしょうか。

OYAKUN
OYAKUN
BITAND関数は、他のエンジニアリング関数を組みあせて使うことで本領発揮する関数ですね。

関連記事: BINOMDIST関数の使い方|一定の試行が成功する確率を計算する
関連記事: BIN2OCT関数の使い方|2進数を8進数に変換する
関連記事: BIN2DEC関数の使い方|2進数を10進数表記へ変換する
関連記事: BETAINV関数の使い方|β分布区間に対しβ累積分布の逆関数の値を返す