bitset
首先要导入bitset库
#include<bitset>
bitset初始化
举些例子:
bitset<16> foo; #16位全为0
输出:
0000000000000000
bitset<16> foo(5); #共16位,值为5
输出:
0000000000000101
int h=1,m=1;
bitset<10> foo(h<<6|m); #h左移6位再加上m
输出:
0001000001
还可以是string类型:
string s="01001";
bitset<10> foo(s);
输出:
0000001001
bitset操作
foo.any()
foo中是否存在置为1的二进制位?
foo.none()
foo中不存在置为1的二进制位吗?
foo.count()
foo中置为1的二进制位的个数
foo.size()
foo中二进制位的个数
foo[pos]
访问 foo中在pos处的二进制位
foo.test(pos)
foo中在pos处的二进制位是否为1?
foo.set()
把foo中所有二进制位都置为1
foo.set(pos)
把foo中在pos处的二进制位置为1
foo.reset()
把foo中所有二进制位都置为0
foo.reset(pos)
把foo中在pos处的二进制位置为0
foo.flip()
把foo中所有二进制位逐位取反
foo.flip(pos)
把foo中在pos处的二进制位取反
foo.to_ulong()
用foo中同样的二进制位返回一个unsigned long值
os <<foo
把foo中的位集输出到os流