bitset操作
操作 | 功能 | 用法 |
test(pos) | pos 位是否为1 ? | a.test(4) |
any() | 任意位是否为1 ? | a.any() |
none() | 是否没有位为1 ? | a.none() |
count() | 值为1 的位的个数 | a.count() |
size() | 位元素的个数 | a.size() |
[pos] | 访问pos 位 | a[4] |
flip() | 翻转所有的位 | a.flip() |
flip(pos) | 翻转pos 位 | a.flip(pos) |
set() | 将所有位置设为1 | a.set() |
set(pos) | 将pos 位置1 | a.set(4) |
reset() | 将所有位置设为0 | a.reset() |
reset(pos) | 将pos 位置0 | a.reset(4) |
bitset对象的构造方法:
1、为构造函数显式提供一个无符号参数,bitset对象的前N位被初始化为参数的对应位值
bitset< 32 > bitvec1 (0xffff) 将低16位设置为1
bitset< 8> bitvec2( 012) 00001010
2、传递一个代表0和1的字符串参数来构造bitset对象
string bitval( "1010")
bitset<8> bitvec3( bitval) 与bitvec2等价
3、还可以标记用来初始化bitset的字符串的范围
//从位置6开始,长度为4:1010
string bitval("1111111111111010101")
bitset<8> bitvec4(bitval, 6, 4) 同bitvec2
//若第三个参数不设置则一直到末尾,注意这里位置6时从右边开始计算的
bitset对象支持两个成员函数用来将其转换成其他类型。
1、to_string() 将其转换成string表示
string bitval(bitvec3.to_string());
2、to_ulong() 将其转换成unsigned long 类型的整数表示
bitset类型还支持|, &等位操作符