std::bitset<N>::operator<<,<<=,>>,>>=
来自cppreference.com
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) |
计算逐位右旋转的结果 (函数模板) |
进行二进制与、或、异或及非 (公开成员函数) |