std::bitset<N>::operator<<,<<=,>>,>>=
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 << " (initial value)\n";
for (; b.any(); b >>= 1)
{
while (!b.test(0))
b >>= 1;
std::cout << b << '\n';
}
std::cout << b << " (final value)\n";
}
Вывод:
01110010 (initial value) 00111001 00000111 00000011 00000001 00000000 (final value)
См. также
|
(C++20) | вычисляет результат побитового циклического сдвига влево (шаблон функции) |
|
(C++20) | вычисляет результат побитового циклического сдвига вправо (шаблон функции) |
|
(C++29) | изменяет порядок битов целого числа на обратный (шаблон функции) |
| выполняют двоичные операции И, ИЛИ, исключающее ИЛИ и НЕ (открытая функция-член) |
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/cpp/utility/bitset/operator_ltltgtgt