Exclusive OR Calculator
ビット演算の核心:A ^ B を精密にシミュレート。
XOR(排他的論理和)の深淵:ITエンジニアが知るべきビットの魔法
コンピュータの内部では、すべてのデータは「0」と「1」のビット列で表現されています。この最小単位の世界において、最も強力かつ美しく活用されている演算がXOR(排他的論理和:Exclusive OR)です。
「どちらか一方が正しい(1)ときだけ結果が正しい(1)になる」というこの論理演算は、プログラミングにおけるビット操作、暗号化、データの誤り訂正、さらには画像処理に至るまで、現代のあらゆるテクノロジーの基礎を支えています。
1. XORの基本原理:真理値表で見極める
XORは、2つの入力が「異なる」ときにのみ1を出力し、「同じ」ときには0を出力します。これを「排他的(Exclusive)」と呼ぶのは、両方が1(包含的なOR:単なる論理和)の場合の結果を除外しているためです。
| Input A | Input B | Output (A ^ B) |
|---|---|---|
| 0 | 0 | 0 |
| 0 | 1 | 1 |
| 1 | 0 | 1 |
| 1 | 1 | 0 |
この「自分自身と同じものをぶつけるとゼロになる」という性質が、数多くの応用を生み出しています。
2. 暗号学の聖杯:ワンタイムパッド
暗号学において、XORは最も単純かつ強力なツールです。平文 P に対し、ランダムな鍵 K を使って XOR 演算を行うと暗号文 C が生成されます。
この暗号文 C に対し、再び同じ鍵 K を作用させると、驚くべきことに元の平文 P が復元されます: (C ^ K) = P。もし鍵が完全にランダムで、平文と同じ長さがあり、一度しか使われない場合(ワンタイムパッド)、この暗号は数学的に「絶対に解読不能」であることが証明されています。
3. データ完全性と RAID 5 の仕組み
ストレージ技術であるRAID 5(分散パリティ)も、XORの性質を巧みに利用しています。複数のディスクに保存されたデータの XOR を計算して「パリティ」として保存しておけば、1台のディスクが物理的に故障しても、残りのディスクのデータとパリティを再び XOR することで、失われたデータを完全に復元することができます。
例えば、A, B, C というデータがある場合、Parity = A ^ B ^ C を計算します。もし B
のディスクが壊れても、A ^ C ^ Parity を演算すれば、B の値が魔法のように蘇ります。
4. プログラミングにおける XOR ハック
開発現場において、XORは単なる比較以上の力を発揮します。
- 一時変数なしでの値の交換:
a ^= b; b ^= a; a ^= b;という3行のコードで、一時的なメモリを消費せずに2つの変数を入れ替えることができます。 - 差分の検出: 全く同じ内容のファイルやメモリブロックを XOR すると、結果はすべて 0 になります。0 以外のビットが立っている場所が、即ち「変更点(差分)」です。
- チェックサム: 簡易的なエラーチェックとして、全データの XOR を取る手法(LRC:垂直冗長検査)が古くから通信プロトコルで使われてきました。
5. ビット演算とハードウェア
CPUの内部回路(ALU:算術論理演算ユニット)において、XORゲートは「加算器」の核となります。2つのビットを足す際、桁上がりを無視した足し算の結果は、まさに XOR そのものです。情報の最小単位を操る IT エンジニアにとって、XOR を理解することは、コンピュータの思考そのものを理解することに他なりません。
エンジニアのための XOR まとめ
- 同値なら 0:
x ^ x = 0 - ゼロとの演算は自分自身:
x ^ 0 = x - 結合法則と交換法則: 演算の順序を入れ替えても結果は変わりません。
- 可逆性: 同じ値を2回 XOR すると元に戻ります。