Поразрядные операции над std::bitset в C++
Для двух std::bitset одинаковой длины
стандарт задает поразрядные операции
&, | и ^, как для целых
масок.
Оператор ~ инвертирует каждый бит
одного набора. Запишем два коротких набора,
посчитаем пересечение и объединение и
выведем оба результата:
#include <bitset>
#include <iostream>
std::bitset<4> left{0b1100};
std::bitset<4> right{0b1010};
std::bitset<4> both = left & right;
std::bitset<4> either = left | right;
std::cout << both << "\n";
std::cout << either << "\n";
Исключающее или оставляет 1 там, где
биты разошлись. Запишем xor и инверсию
левого набора:
#include <bitset>
#include <iostream>
std::bitset<4> left{0b1100};
std::bitset<4> right{0b1010};
std::bitset<4> diff = left ^ right;
std::bitset<4> flipped = ~left;
std::cout << diff << "\n";
std::cout << flipped << "\n";
Пусть std::bitset<4> a
равен 3, а b - 5.
Выведите a & b и a ^ b
на двух строках.