XOR計算機:排他的論理とビット演算

真偽値、2進数列、10進整数のXORを、真理値表と手順付きで計算します。

演算タイプを選び、2つの値を入力して計算を押すと、XOR の結果を確認できます。必要に応じて真理値表や手順の内訳も表示できます。

XOR計算機:排他的論理とビット演算
真偽値、2進数列、10進整数のXORを、真理値表と手順付きで計算します。

2つのブール値(0/1 または true/false)を XOR します。ちょうど一方だけが true のときに true を返します。

XOR 計算機について

XOR は Exclusive OR(排他的論理和)の略で、ブール代数とデジタル電子回路の基本的な論理演算のひとつです。通常の OR は少なくとも一方が true なら true を返しますが、XOR は2つの入力のうちちょうど一方だけが true のときにのみ true を返し、両方が true の場合も両方が false の場合も false になります。この「排他」的な性質が、計算や数学のさまざまな場面で XOR を特に有用にしています。 最も基本的には、ブール XOR は二入力の論理ゲートです。2つの入力があり、それぞれ 0(false)または 1(true)を与えると、入力が異なるときだけ出力は 1 になります。完全な真理値表は 0 XOR 0 = 0、0 XOR 1 = 1、1 XOR 0 = 1、1 XOR 1 = 0 です。これは「どちらか一方だけ、両方ではない」という表現と同じ意味です。日常語で言えば、「ケーキかパイのどちらかを食べる(両方ではない)」は XOR の文です。 バイナリ XOR は、このブールの考え方をビット列全体に拡張します。2つの入力列にある対応するビット同士をそれぞれ独立に XOR して、出力ビットを作ります。たとえば 1010 XOR 1100 = 0110 です。これは、1つ目のビット(1 と 1)が 0、2つ目(0 と 1)が 1、3つ目(1 と 0)が 1、4つ目(0 と 0)が 0 になるためです。この演算は、デジタル通信の誤り検出、RAID のパリティ計算、ストリーム暗号などで重要な役割を果たします。 ビット単位 XOR は、10進整数の2進表現全体に対して同時に作用します。現代のプロセッサではビット単位 XOR は1クロック命令として実装されているため、非常に高速です。プログラマは、補助変数なしで2つの整数を入れ替える、ビットマスクの特定ビットを反転する、配列内の唯一の非重複要素を見つける、チェックサムを計算する、といった多くの工夫に XOR を使います。a XOR a = 0(どんな値でも自分自身との XOR は 0)と a XOR 0 = a(どんな値でも 0 との XOR はその値自身)という性質が、これらの多くの応用を支えています。 暗号学では、XOR はワンタイムパッドの基盤です。鍵が真にランダムで1回しか使われない場合、理論上破れない唯一の暗号方式です。メッセージの各ビットは、鍵の対応するビットと XOR されます。復号も同じで、暗号文を同じ鍵ともう一度 XOR すれば元に戻ります。これは XOR が自分自身の逆演算だからです: (a XOR k) XOR k = a。ストリーム暗号や CTR、OFB のようなブロック暗号モードも、この性質を利用してブロック暗号を鍵ストリーム方式に変換します。 この XOR 計算機は、ブール、バイナリ、ビット単位の3種類を1か所で扱えます。値を入力し、目的に合った演算モードを選び、必要なら真理値表や手順の表示を有効にして、結果がどのように導かれるかを正確に確認できます。

XOR 計算機の例

ブール、バイナリ、ビット単位モードでの代表的な XOR 演算を実値で示します。

入力結果説明
ブール: true XOR falsetrue入力が異なるので XOR は true を返します。1 XOR 0 = 1 です。
ブール: true XOR truefalse両方の入力が同じなので XOR は false を返します。1 XOR 1 = 0 です。
バイナリ: 1010 XOR 11000110ビットごとの XOR: 1^1=0、0^1=1、1^0=1、0^0=0。結果は 0110(10進数 6)です。
ビット単位: 12 XOR 10612 の2進数は 1100、10 は 1010 です。XOR の結果は 0110 = 10進数 6 です。

XOR 計算機の使い方

  1. 演算タイプを選びます。ブールは true/false、バイナリはビット列、ビット単位は10進整数です。
  2. 1つ目の値(A)を、選んだタイプに合った形式で入力します。ブールなら 0/1/true/false、バイナリなら 1010 のようなビット列、ビット単位なら10進整数です。
  3. 2つ目の値(B)も、1つ目と同じ形式で入力します。
  4. 必要に応じて「真理値表を表示」で4通りの入力の組み合わせを確認するか、「手順を表示」でビットごとの XOR を確認できます。
  5. 「XOR を計算」をクリックして結果を求めます。「リセット」をクリックすると、すべての欄をクリアして最初からやり直せます。

XOR 計算機 FAQ

XOR とは何ですか?
XOR は Exclusive OR(排他的論理和)の略です。2つの入力のうちちょうど一方だけが true のときに true(1)を返し、両方が同じなら false(0)を返す論理演算です。「排他的」という言葉が、両方が true のときにも true を返す通常の OR と区別されます。
XOR と OR の違いは何ですか?
通常の OR は、片方または両方が true なら true を返します。XOR は、一方が true で他方が false の場合にのみ true を返し、両方が true のケースを除外します。0 OR 0 = 0 と 1 OR 1 = 1 の行は同じですが、違いは 1 XOR 1 = 0 と 1 OR 1 = 1 に現れます。
なぜ XOR は暗号学で重要なのですか?
XOR は自分自身の逆演算です: (a XOR k) XOR k = a が任意の a と k で成り立ちます。つまり、鍵で XOR して暗号化し、同じ鍵でもう一度 XOR すれば復号できます。ワンタイムパッドは理論上破れない唯一の暗号方式で、完全に XOR に基づいています。ストリーム暗号や多くのブロック暗号モードも、鍵素材と平文を混ぜるために XOR に依存します。
長さの異なる2進数を XOR するにはどうしますか?
短い方の列の左側を 0 で埋めて両方の長さをそろえ、それから対応する各ビットを XOR します。たとえば 110 XOR 1010 は 0110 XOR 1010 = 1100 になります。この計算機では自動的にゼロ埋めされます。
プログラミングでのビット単位 XOR の実用例は?
ビット単位 XOR は、一時変数なしで2つの変数を入れ替える a ^= b; b ^= a; a ^= b; のような方法によく使われます。フラグの特定ビットを反転したり、配列内で一度しか出ない要素を見つけたり(全要素を XOR すると、ペアは 0 に打ち消される)、高速なチェックサムやハッシュ混合にも使われます。
XOR は2つ以上の入力にも使えますか?
はい。多入力 XOR は、単純に2つずつ順番に XOR したものです。1 の個数が奇数なら結果は 1(true)、偶数なら 0(false)になります。この性質は RAID-5 のパリティ計算で使われ、複数のデータディスクのパリティはそれら全体の XOR になります。