Closed1
AtCoder C++入門の覚え書き #3-2 bit演算
bitset
数値やbitset型の値はビット演算が出来る。
(数値 or bitset) << 1
左に1列シフト。1列でも値は省略不可。
bitset<4> b1("1111"); // "1111"
bitest<4> b2(15); // "1111"
int i = 16 << 1; // 15 (1111から1列左シフトして1110になるため
bit演算子
bitset<4> b1("1010");
bitset<4> b2("0110");
cout << (b1 & b2) << endl; // AND: "0010";
cout << (b1 | b2) << endl; // OR: "1110";
cout << (b1 ^ b2) << endl; // XOR: "1100";
cout << ~b1 << endl; // NOT: "0101";
bitsetのメソッド
bitset<4> b("1010");
cout << b.test(0) << endl; // false. index 0(左から数えて0+1番目)の値が0のため
cout << b.set(2, 1) << endl; // b: "1110". 1をセットするなら第二引数省略可能
cout << b.flip() << endl; // "1110" -> "0001"
cout << b.set() << endl; // "1111"
cout << b.reset() << endl; // "0000"
b = 5; // "0101";
cout << b.all() << endl; // false
cout << b.any() << endl; // true
cout << b.count() << endl; // 2
string s = b.to_string(); // string: "0101"
int i = b.to_ullong(); // int: 5. 値は unsigned long long として返されてintにキャストされている
補足: b[i]
は出来るが b.at(i)
は存在しない。
このスクラップは2023/10/11にクローズされました