ビットXOR演算と活用法
XOR(^)の仕組みとそのユニークな性質を学びます:自己逆元、ビットのトグル、一時変数なしの値の交換、シンプルな暗号化。
XOR Operations
詳細な説明
ビットXOR(^)を理解する
XOR(排他的論理和)は2つの入力ビットが異なる場合に1を返し、同じ場合に0を返します。
真理値表
A | B | A ^ B
--|---|------
0 | 0 | 0
0 | 1 | 1
1 | 0 | 1
1 | 1 | 0
計算例
42 = 00101010
^ 15 = 00001111
──────────────────
37 = 00100101
XORの主要な性質
自己逆元:
A ^ B ^ B = A。値を同じキーで2回XORすると元に戻ります。これはシンプルな対称暗号化とチェックサムの基礎です。単位元:
A ^ 0 = A。ゼロとのXORは元の値を生成します。自己打消し:
A ^ A = 0。任意の値と自身のXORはゼロを生成します。アセンブリ言語でレジスタを効率的にゼロにするために使用されます。可換性と結合性: 順序は関係ありません —
A ^ B = B ^ Aかつ(A ^ B) ^ C = A ^ (B ^ C)。
ビットのトグル
XORは選択的にビットを反転します。1とXORするとビットが反転し、0とXORすると変更されません。これによりXORはフラグシステムのトグル操作に最適です。
奇数個の要素を見つける
すべての要素が2回出現し1つだけ例外がある配列で、全要素をXORすると、ペアが打ち消し合い(A ^ A = 0)、ユニークな要素だけが残ります。O(n)時間、O(1)空間で動作します — 典型的な面接問題です。
ユースケース
暗号学者はXORを基本的な構成要素として使用します。ワンタイムパッド暗号化方式では平文と同じ長さのランダムキーをXORします:暗号文 = 平文 ^ キー。XORは自己逆元なので、復号も同じ演算です:平文 = 暗号文 ^ キー。ChaCha20やAES-CTRモードなどの最新のストリーム暗号もXORに大きく依存しています。