Namespaces
Variants

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

From cppreference.net
Utilities library
bitset operator << ( std:: size_t pos ) const ;
(1) (自 C++11 起为 noexcept)
(自 C++23 起为 constexpr)
bitset & operator <<= ( std:: size_t pos ) ;
(2) (自 C++11 起为 noexcept)
(自 C++23 起为 constexpr)
bitset operator >> ( std:: size_t pos ) const ;
(3) (自 C++11 起为 noexcept)
(自 C++23 起为 constexpr)
bitset & operator >>= ( std:: size_t pos ) ;
(4) (自 C++11 起为 noexcept)
(自 C++23 起为 constexpr)

执行二进制左移(向更高索引位置)和二进制右移(向更低索引位置)。移入位补零,超出索引范围的位将被丢弃(忽略)。

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)
计算按位右旋转的结果
(函数模板)
执行二进制与、或、异或及非运算
(公开成员函数)