1) Оператор xor служит альтернативным названием для оператора ^ (побитовое исключающее ИЛИ)
#include <iostream> // cout, endl
#include <bitset> // bitset
using namespace std;
int main(){
bitset<8> a(0b11110000); // Задаем 8 бит
bitset<8> b(0b00111100); // Задаем 8 бит
cout << "a xor b = " << (a xor b); //a xor b = 11001100
}
2) Оператор xor (побитовое исключающее ИЛИ) обладает замечательным свойством - если последовательность бит "проксорить" с любой другой последовательностью бит дважды, то исходная последовательность восстановится. Данное свойство используют в защите информации. Необходимо помнить, что защита будет надежной только если последовательность с которой будут "ксорить" будет случайная, будет неизвестна злоумышленнику, и не будет повторяться для разных защищаемых сообщений.
#include <iostream> // cout, endl
#include <bitset> // bitset
using namespace std;
int main(){
bitset<8> a(0b11110000); // Задаем 8 бит
bitset<8> b(0b00111100); // Задаем 8 бит
bitset<8> ab = a xor b; // ab равно побитовому исключающему ИЛИ над a и b
cout << "ab = " << ab << endl; //ab = 11001100
ab = ab xor b; // Производим еще раз побитовое исключающее ИЛИ с b (восстанавливаем a)
cout << "ab = " << ab << endl; //ab = 11110000 (результат равен a)
}