std::bitset<N>::operator<<,<<=,>>,>>=

From cppreference.com
< cpp‎ | utility‎ | bitset
 
 
Utilities library
General utilities
Date and time
Function objects
Formatting library (C++20)
(C++11)
Relational operators (deprecated in C++20)
Integer comparison functions
(C++20)(C++20)(C++20)   
(C++20)
Swap and type operations
(C++14)
(C++11)
(C++11)
(C++11)
(C++17)
Common vocabulary types
(C++11)
(C++17)
(C++17)
(C++17)
(C++11)
(C++17)
(C++23)
Elementary string conversions
(C++17)
(C++17)
 
 
(1)
bitset operator<<( std::size_t pos ) const;
(until C++11)
bitset operator<<( std::size_t pos ) const noexcept;
(since C++11)
(until C++23)
constexpr bitset operator<<( std::size_t pos ) const noexcept;
(since C++23)
(2)
bitset& operator<<=( std::size_t pos );
(until C++11)
bitset& operator<<=( std::size_t pos ) noexcept;
(since C++11)
(until C++23)
constexpr bitset& operator<<=( std::size_t pos ) noexcept;
(since C++23)
(3)
bitset operator>>( std::size_t pos ) const;
(until C++11)
bitset operator>>( std::size_t pos ) const noexcept;
(since C++11)
(until C++23)
constexpr bitset operator>>( std::size_t pos ) const noexcept;
(since C++23)
(4)
bitset& operator>>=( std::size_t pos );
(until C++11)
bitset& operator>>=( std::size_t pos ) noexcept;
(since C++11)
(until C++23)
constexpr bitset& operator>>=( std::size_t pos ) noexcept;
(since C++23)

Performs binary shift left (towards higher index positions) and binary shift right (towards lower index positions). Zeroes are shifted in, and bits that would go to an index out of range are dropped (ignored).

1-2) Performs binary shift left. The (2) version is destructive, i.e. performs the shift to the current object.
3-4) Performs binary shift right. The (4) version is destructive, i.e. performs the shift to the current object.

Parameters

pos - number of positions to shift the bits

Return value

1,3) new bitset object containing the shifted bits
2,4) *this

Example

#include <iostream>
#include <bitset>
 
int main()
{
    std::bitset<8> b{0b01110010};
    std::cout << b << " (initial value)\n";
 
    for (; b.any(); b >>= 1) {
        for (; !b.test(0); b >>= 1) {
        }
        std::cout << b << '\n';
    }
 
    std::cout << b << " (final value)\n";
}

Output:

01110010 (initial value)
00111001
00000111
00000011
00000001
00000000 (final value)

See also

(C++20)
computes the result of bitwise left-rotation
(function template)
(C++20)
computes the result of bitwise right-rotation
(function template)
performs binary AND, OR, XOR and NOT
(public member function)