ExcelのBITXOR関数の使い方|ビットXOR演算の基本と実用例

スポンサーリンク

Excelで2つの数値の「違い」だけをビット単位で取り出したいけれど、どうすればいいかわからない…そんな場面はありませんか?

ビット演算のなかでも「排他的論理和(XOR)」は少し取っつきにくいですよね。でも、フラグのON/OFF切り替えやデータの差分チェックなど、知っておくと便利な場面が実は多いんです。

この記事では、ExcelのBITXOR関数の使い方を基本から丁寧に解説します。構文や引数はもちろん、実務での活用例やエラー対処法まで網羅しているので、ぜひ最後まで読んでみてください。

ExcelのBITXOR関数とは?

BITXOR関数(ビット エクスクルーシブオア関数)は、2つの数値のビット単位のXOR演算(排他的論理和)を行う関数です。

「排他的論理和」とは、2つの数値を2進数に変換して、同じ位置のビットが異なるときだけ1を返す計算のことです。AND演算が「両方1」で1を返すのに対して、XOR演算は「片方だけ1」のときに1を返します。

XOR演算の真理値表を見ると、ルールがシンプルにわかりますよ。

ビットAビットBXOR結果
000
011
101
110

つまり「2つの値が違うところだけを抜き出す」演算ですね。

BITXOR関数はExcel 2013以降で利用できます。お使いのバージョンが対応しているか確認しておきましょう。

BITXOR関数の構文と引数

基本構文

=BITXOR(数値1, 数値2)

引数は2つとも必須です。省略するとエラーになります。

引数の詳細

引数必須/任意説明
数値1必須XOR演算を行う1つ目の数値(0以上の整数)
数値2必須XOR演算を行う2つ目の数値(0以上の整数)

どちらの引数にも、0以上かつ(2^48)-1以下の整数を指定します。この範囲を超えると#NUM!エラーになるので注意してくださいね。

BITXOR関数の基本的な使い方

まずはシンプルな使い方から見ていきましょう。

数値を直接指定する方法

セルに次のように入力します。

=BITXOR(5, 12)

結果は 9 になります。

この計算を2進数で確認してみましょう。

  • 5 = 0101(2進数)
  • 12 = 1100(2進数)
  • XOR = 1001(2進数)= 9(10進数)

ビットが異なる桁(1桁目と4桁目)だけが1になっているのがポイントです。

セル参照で指定する方法

A1セルに「13」、B1セルに「11」が入っている場合は、次のように書きます。

=BITXOR(A1, B1)

結果は 6 です。

  • 13 = 1101(2進数)
  • 11 = 1011(2進数)
  • XOR = 0110(2進数)= 6(10進数)

DEC2BIN関数(10進数を2進数に変換する関数)を使うと、途中の2進数変換も確認できますよ。

=DEC2BIN(A1)  → "1101"
=DEC2BIN(B1)  → "1011"

同じ数値同士のXOR

BITXOR関数には面白い性質があります。同じ数値同士でXOR演算を行うと、結果は必ず 0 になります。

=BITXOR(7, 7)

結果は 0 です。すべてのビットが同じなので、XOR結果はすべて0になるわけですね。この性質は、2つの値が一致しているかどうかの判定に使えます。

BITXOR関数の実務活用例

「XOR演算って実務で使うの?」と思った方もいるかもしれません。実は、フラグの切り替えやデータ比較で活躍するんです。

活用例1: フラグのON/OFF切り替え(トグル)

システムの設定をビットフラグで管理しているケースを考えてみましょう。

ビット位置設定項目
1桁目通知ON1
2桁目ダークモード2
3桁目自動保存4

現在の設定値が「5」(= 0101)の場合、「通知ON」と「自動保存」がONの状態です。

ここで「ダークモード(= 2)」のON/OFFを切り替えたいときは、次のようにBITXOR関数を使います。

=BITXOR(5, 2)

結果は 7(= 0111)です。ダークモードがONに切り替わりました。

もう一度同じ操作をすると、元に戻ります。

=BITXOR(7, 2)

結果は 5(= 0101)。ダークモードがOFFに戻りましたね。

このように、XOR演算は「同じ値で2回XORすると元に戻る」性質があるので、フラグの切り替えにぴったりです。

活用例2: 2つの値の差分チェック

BITXOR関数の結果が0なら、2つの値は完全に一致しています。この性質を使って、データの差分チェックができます。

=IF(BITXOR(A2, B2) = 0, "一致", "不一致")

A列とB列の値を比較して、ビット単位で違いがあるかどうかを判定できますよ。

さらに、BITXOR関数の結果を2進数に変換すると、どのビットが異なるかも一目でわかります。

=DEC2BIN(BITXOR(A2, B2))

結果のなかで「1」になっている桁が、値が異なる位置です。

活用例3: 簡易的なデータの暗号化と復号

XOR演算には「同じキーで2回XORすると元に戻る」という性質があります。この仕組みを使えば、簡易的なデータの暗号化ができます。

たとえば、元の値が「42」でキーが「15」の場合を見てみましょう。

暗号化:

=BITXOR(42, 15)

結果は 37 です。元の値「42」が「37」に変換されました。

復号(同じキーで再度XOR):

=BITXOR(37, 15)

結果は 42 です。元の値に戻りましたね。

本格的な暗号化には専用のツールが必要ですが、社内で数値データをちょっと隠したいときに使えるテクニックです。

他のExcelビット演算関数との使い分け

Excelにはビット演算関数がいくつか用意されています。場面に応じて使い分けましょう。

関数演算説明使いどころ
BITANDAND(論理積)両方1のビットだけ残す権限チェック・フラグ抽出
BITOROR(論理和)どちらか1のビットを残す権限の付与・フラグ追加
BITXORXOR(排他的論理和)異なるビットだけ残すフラグの切り替え・差分検出
BITLSHIFT左シフトビットを左にずらす値の2倍・4倍計算
BITRSHIFT右シフトビットを右にずらす値の半分計算

BITXOR関数は「フラグのON/OFFを切り替える」ときに使います。一方、特定のフラグが立っているか確認するならBITAND関数、フラグを追加するならBITOR関数が適しています。

BITXOR関数のエラーと対処法

BITXOR関数で発生しやすいエラーをまとめました。

#NUM! エラー

次のいずれかに該当すると#NUM!エラーになります。

  • 引数に負の数を指定した場合
  • 引数に(2^48)-1(= 281,474,976,710,655)を超える値を指定した場合
  • 引数に小数を指定した場合

対処法: 引数には0以上の整数を指定してください。小数が入る可能性がある場合は、INT関数(小数点以下を切り捨てる関数)で整数に変換しましょう。

=BITXOR(INT(A1), INT(B1))

#VALUE! エラー

引数に文字列を指定すると#VALUE!エラーになります。

対処法: セル参照の場合は、参照先が数値であることを確認しましょう。VALUE関数(文字列を数値に変換する関数)で変換する方法もあります。

=BITXOR(VALUE(A1), VALUE(B1))

まとめ

この記事では、ExcelのBITXOR関数の使い方を解説しました。

  • BITXOR関数は2つの数値のビット単位のXOR演算(排他的論理和)を行う
  • 引数は2つとも必須で、0以上の整数を指定する
  • 同じ値で2回XORすると元に戻る性質がある
  • フラグの切り替え・データ比較・簡易暗号化など、実務でも活用できる
  • BITANDBITORなど、他のビット演算関数と組み合わせるとさらに便利

ビット演算は一見むずかしそうに見えますが、BITXOR関数を使えばExcelで手軽に計算できます。まずは基本の使い方から試してみてくださいね。

タイトルとURLをコピーしました