BITAND・BITOR・BITXOR関数の使い方|2進数の桁ごとのAND・OR・XOR・フラグの判定【実機で解説】

BITAND・BITOR・BITXOR関数の使い方|2進数の桁ごとのAND・OR・XOR・フラグの判定【実機で解説】

BITAND 関数・BITOR 関数・BITXOR 関数は、2 つの数を 2 進数にして、桁(ビット)ごとに AND・OR・XOR を計算する関数です。12(1100)と 10(1010)の BITAND は、どちらも 1 の桁だけが残って 8(1000)になります。

「1=メール、2=電話、4=訪問」のように、いくつかの「あり・なし」を 1 つの数にまとめたフラグの判定に使えます。この記事では、3 つの関数の使い方を、実際の Excel で確かめた結果で説明します。

練習用Excelファイル(無料ダウンロード)
2 つの数の表と、この記事の BITAND・BITOR・BITXOR の式をまとめた練習ファイルです。
Excelファイル(.xlsx)/登録不要/数式・練習データ入り
目次

BITAND・BITOR・BITXOR 関数の書き方

=BITAND(数1, 数2)
=BITOR(数1, 数2)
=BITXOR(数1, 数2)
関数桁ごとの計算
BITANDどちらも 1 の桁だけ 1
BITORどちらかが 1 の桁は 1
BITXOR片方だけ 1 の桁は 1

数は 0 以上の整数です。2 進数で確かめたいときは BASE(数,2) で表示できます。

1. 桁ごとの AND(BITAND)

I2 に式を入れて、下へコピーします。

=BITAND(A2,B2)
エクセルのBITAND関数で2つの数のビットごとのANDを求めた画面
エクセルのBITAND関数で2つの数のビットごとのANDを求めた画面

12 と 10 は 8、5(101)と 3(011)は 1 でした。

2. 桁ごとの OR(BITOR)

どちらかが 1 の桁を 1 にします。

=BITOR(A2,B2)
エクセルのBITOR関数で2つの数のビットごとのORを求めた画面
エクセルのBITOR関数で2つの数のビットごとのORを求めた画面

12 と 10 は 14、5 と 3 は 7 でした。

3. 桁ごとの XOR(BITXOR)

片方だけ 1 の桁を 1 にします。同じ数どうしは 0 になります。

=BITXOR(A2,B2)
エクセルのBITXOR関数で2つの数のビットごとのXORを求めた画面
エクセルのBITXOR関数で2つの数のビットごとのXORを求めた画面

12 と 10 は 6、2 と 2 は 0 でした。

4. フラグの判定(4 のビットがあるか)

数 1 の中に 4(100)の桁があるかを調べます。

=IF(BITAND(A2,4)>0,"あり","なし")
エクセルのBITAND関数とIFで数の中に4のビットがあるかを判定した画面
エクセルのBITAND関数とIFで数の中に4のビットがあるかを判定した画面

12(1100)は あり、5(101)は あり、2(10)は なし、9(1001)は なし でした。

【実機で検証】BITAND でつまずくところ

エクセルのBITAND関数でマイナスや小数や大きすぎる数を入れたときやBITLSHIFTの結果を確かめた画面
エクセルのBITAND関数でマイナスや小数や大きすぎる数を入れたときやBITLSHIFTの結果を確かめた画面
ためしたこと式結果
BITLSHIFT(1,3)(左へ 3 桁)=BITLSHIFT(1,3)8
BITRSHIFT(16,2)(右へ 2 桁)=BITRSHIFT(16,2)4
マイナス(-1)=BITAND(-1,3)#NUM!
小数(2.5)=BITAND(2.5,3)#NUM!
2^48(大きすぎる)=BITAND(2^48,1)#NUM!
2^48-1=BITAND(2^48-1,1)1

BITLSHIFT(1,3) は 8、BITRSHIFT(16,2) は 4 でした。左へ 1 桁ずらすと 2 倍、右へ 1 桁ずらすと半分になります。

マイナスを入れると #NUM!、小数の 2.5 でも #NUM! になりました。0 以上の整数だけが使えます。

2^48 は #NUM! で、2^48-1 までなら 1 と計算できました。

よくある質問

2 進数で表示したいときは?

BASE 関数で =BASE(数,2) と書くと、2 進数の文字になります。

TRUE・FALSE の XOR を出したいときは?

論理値の XOR は XOR 関数を使います。

3 つ以上の数の BITAND を出したいときは?

BITAND は 2 つの数だけなので、=BITAND(BITAND(A2,B2),C2) のように重ねます。

練習用Excelファイル(無料ダウンロード)
この記事の例をまとめた練習ファイルです。
Excelファイル(.xlsx)/登録不要/数式・練習データ入り

あわせて読みたい:関連記事

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

コメント

コメントする

目次