std::bitset<N>::operator<<,<<=,>>,>>=
Со ru.cppreference.net
bitset operator<<( std::size_t pos ) const;
|
(1) | (noexcept начиная с C++11) (constexpr начиная с C++23) |
bitset& operator<<=( std::size_t pos );
|
(2) | (noexcept начиная с C++11) (constexpr начиная с C++23) |
bitset operator>>( std::size_t pos ) const;
|
(3) | (noexcept начиная с C++11) (constexpr начиная с C++23) |
bitset& operator>>=( std::size_t pos );
|
(4) | (noexcept начиная с C++11) (constexpr начиная с C++23) |
Выполняет двоичный сдвиг влево (в сторону более высоких индексных позиций) и двоичный сдвиг вправо (в сторону более низких индексных позиций). Сдвинутые биты заполняются нулями, а биты, которые должны выйти за пределы допустимого диапазона индексов, отбрасываются (игнорируются).
1,2) Выполняет двоичный сдвиг влево. Версия (2) является разрушающей, т.е. выполняет сдвиг над текущим объектом.
3,4) Выполняет двоичный сдвиг вправо. Версия (4) является разрушающей, т.е. выполняет сдвиг над текущим объектом.
Параметры
| pos | - | количество позиций для сдвига битов |
Возвращаемое значение
1,3)
Новый объект bitset, содержащий сдвинутые биты.
2,4)
*
this
Пример
Запустить этот код
#include <bitset> #include <iostream> int main() { std::bitset<8> b{0b01110010}; std::cout << b << " (начальное значение)\n"; for (; b.any(); b >>= 1) { while (!b.test(0)) b >>= 1; std::cout << b << '\n'; } std::cout << b << " (конечное значение)\n"; }
Вывод:
01110010 (начальное значение) 00111001 00000111 00000011 00000001 00000000 (конечное значение)
См. также
(C++20) |
вычисляет результат циклического сдвига влево (шаблон функции) |
(C++20) |
вычисляет результат циклического сдвига вправо (шаблон функции) |
(C++29) |
обращает порядок битов в целочисленном значении (шаблон функции) |
| выполняет побитовые операции И, ИЛИ, исключающее ИЛИ и НЕ (public функция-член) |