一、头文件
#include<bitset>
二、初始化bitset对象
bitset<n> b; //b有n位,每位都为0
bitset<n> b(u); //b是unsigned long型u的一个副本
bitset<n> b(s); //b是string对象s中含有的位串的副本
bitset<n> b(s, pos, n); //b是s中位置pos开始的n个位的副本
例子:
(1)
bitset<8> b;
输出b:
0 0 0 0 0 0 0 0
(2)
bitset<8> b(192);
0 0 0 0 0 0 1 1 (输出是从低位输出,b[0]是低位,b[7]是高位)
(3)
bitset<8> b("hello1323");
(4)
bitset<8> b("1101");
输出b:
1 1 0 1 0 0 0 0 (字符串中只能出现0和1,否则编译报错)
(5)
string str = "11011110"; bitset<8> b(str, 1, 2);
0 1 0 0 0 0 0 0
三、bitset对象上的操作:
假设有一个bitset对象b
b.any() b中是否存在值为1的二进制位
b.none() b中不存在值为1的二进制位
b.count() b中值为1的二进制位的个数
b.size() b中二进制位的个数
b[pos] 访问b中在pos处的二进制位
b.test(pos) b中在pos处的二进制位置为1
b.reset() 把b中所有二进制位都置为0
b.reset(pos) 把b中在pos处的二进制位置为0
b.flip() 把b中所有二进制位逐位取反
b.flip(pos) 把b中在pos处的二进制位取反