| cppreference.com -> C++ ビット集合 -> 詳細 |
bitset(); bitset( unsigned long val ); |
ビット集合は引数なしで、 あるいは unsigned long 型の数値 val を引数として構築することができる。 後者の場合、val は二進数に変換されてビット集合に挿入される。 ビット集合を生成する際にテンプレート引数として与えた数値が、ビット集合の長さを決定する。
例えば、以下のコードは二つのビット集合を生成し表示する。
// 8ビット長のビット集合を生成する
bitset<8> bs;
// ビット集合を表示する
for( int i = (int) bs.size(); i >= 0; i-- ) {
cout << bs[i] << " ";
}
cout << endl;
// 数値からビット集合を生成する
bitset<8> bs2( (long) 131 );
// ビット集合を表示する
for( int i = (int) bs2.size(); i >= 0; i-- ) {
cout << bs2[i] << " ";
}
cout << endl;
!=, ==, &=, ^=, |=, ~, <<=, >>=, [] |
これらの演算子はビット集合に対して作用する。解説:
例えば、以下のコードはビット集合を作成し、それを 4 ビット左シフトさせる。
// 数値からビット集合を生成する bitset<8> bs2( (long) 131 ); cout << "bs2 is " << bs2 << endl; // ビット集合を 4 ビット左シフトさせる bs2 <<= 4; cout << "now bs2 is " << bs2 << endl;
上記のコードを実行すると、次のように表示される:
bs2 is 10000011 now bs2 is 00110000
bool any(); |
any() 関数は 1 つでも 1 のビットがあれば true を返し、 そうでなければ false を返す。
size_type count(); |
count() 関数はビット集合中で 1 に設定されているビットの数を返す。
bitset |
flip() 関数はビット集合中の全てのビットを反転させ、そのビット集合を返す。 pos が与えられた場合、位置 pos のビットのみを反転させる。
関連項:bool none(); |
none() 関数は全てのビットが 0 のときに true を返し、 そうでなければ false を返す。
bitset |
reset() 関数はビット集合中の全てのビットをクリアし、そのビット集合を返す。 pos が与えられた場合、位置 pos のビットのみをクリアする。
bitset |
set() 関数はビット集合中の全てのビットをセットし、そのビット集合を返す。 pos が与えられた場合、位置 pos のビットのみをセットする。
size_t size(); |
size() 関数はビット集合が保持できるビット数を返す。
bool test( size_t pos ); |
test() 関数は位置 pos のビット値を返す。
string to_string(); |
to_string() 関数はビット集合を文字列表現にしたものを返す。
unsigned long to_ulong(); |
to_ulong() 関数はビット集合を unsigned long 整数に変換したものを返す。