XOR je logický hradlo (operátor), které porovnává dva vstupy. Jeho výstup je pravda (1) pouze tehdy, pokud jsou vstupy rozdílné. Pokud jsou vstupy stejné (oba nuly nebo oba jedničky), výsledek je nepravda (0).
V matematice a informatice se často značí symbolem $\oplus$.
Toto je „bible“ chování XORu. Všimněte si, že funguje jako detektor rozdílů.
| Vstup A | Vstup B | Výstup (A XOR B) | Vysvětlení |
|---|---|---|---|
| 0 | 0 | 0 | Jsou stejné. |
| 0 | 1 | 1 | Jsou různé. |
| 1 | 0 | 1 | Jsou různé. |
| 1 | 1 | 0 | Jsou stejné (toto je hlavní rozdíl oproti klasickému OR). |
To, co dělá XOR tak užitečným pro počítače (a důvod, proč na něm stojí RAID a šifrování), je jeho reverzibilita.
Pokud vezmete nějakou hodnotu A a „zamaskujete“ ji hodnotou B pomocí XOR, získáte šifru C. Pokud tuto šifru C znovu „odmaskujete“ pomocí stejného B, získáte zpět původní A.
$$ (A \oplus B) \oplus B = A $$
Tato rovnice říká: Aplikováním XOR dvakrát vrátíte změny zpět.
XOR je základem většiny šifrovacích algoritmů (např. proudových šifer).
Pokud útočník nezná klíč, vidí jen náhodná čísla. Pokud příjemce použije klíč znovu, získá původní zprávu.
Jak jsme zmínili u paritního disku:
Když Disk 1 shoří, systém vezme Disk 2 a Paritu, provede mezi nimi XOR ($1010 \oplus 0110$) a výsledkem je zázračně obsah ztraceného Disku 1 (1100).
Pomocí XOR lze prohodit obsah dvou proměnných bez použití třetí (pomocné) proměnné.
x = x ^ y; // Změní x na "mix" obou y = x ^ y; // Změní y na původní x x = x ^ y; // Změní x na původní y
Představte si vypínač světla na chodbě, který se ovládá ze dvou míst (schodišťový vypínač).
Světlo svítí jen tehdy, když jsou vypínače v různých polohách.
Související pojmy: Parita, RAID, Logické hradlo, Binární soustava, Šifrování, Bitová operace.