cppreference.com -> C++ ビット集合 -> 詳細

C++ ビット集合(std::bitset)


コンストラクタ

文法:

  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

any

文法:

  bool any();

any() 関数は 1 つでも 1 のビットがあれば true を返し、 そうでなければ false を返す。


count

文法:

  size_type count();

count() 関数はビット集合中で 1 に設定されているビットの数を返す。


flip

文法:

  bitset &flip();
  bitset &lip( size_t pos );

flip() 関数はビット集合中の全てのビットを反転させ、そのビット集合を返す。 pos が与えられた場合、位置 pos のビットのみを反転させる。

関連項:
~ 演算子

none

文法:

  bool none();

none() 関数は全てのビットが 0 のときに true を返し、 そうでなければ false を返す。


reset

文法:

  bitset &reset();
  bitset &reset( size_t pos );

reset() 関数はビット集合中の全てのビットをクリアし、そのビット集合を返す。 pos が与えられた場合、位置 pos のビットのみをクリアする。


set

文法:

  bitset &set();
  bitset &set( size_t pos, int val=1 );

set() 関数はビット集合中の全てのビットをセットし、そのビット集合を返す。 pos が与えられた場合、位置 pos のビットのみをセットする。


size

文法:

  size_t size();

size() 関数はビット集合が保持できるビット数を返す。


test

文法:

  bool test( size_t pos );

test() 関数は位置 pos のビット値を返す。


to_string

文法:

  string to_string();

to_string() 関数はビット集合を文字列表現にしたものを返す。


to_ulong

文法:

  unsigned long to_ulong();

to_ulong() 関数はビット集合を unsigned long 整数に変換したものを返す。