std::bitset<N>::operator<<,<<=,>>,>>=
cppreference.netより
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 << " (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) |
整数のビットを反転する (関数テンプレート) |
| バイナリAND、OR、XOR、およびNOTを実行する (パブリックメンバ関数) |