标准库bitset类型:用于处理二进制位的有序集,每个位可能包含0、1值。
#include<bitset>
using std::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个位的副本
string strval("1100");
bitset<32> bitvec(strval);//bitvec的位模式中第2、3位置为1,其余位置为0,如果string对象的字符个数小于bitset类型的长度,则高阶将置为0。
bitset<16> bitvec(0xffff);//0-15为设定为1;
bitset<32> bitvec(0xffff);//0-15为设定为1,其它位置为0;
bitset对象上的操作:
b.any()//是否存在值为1的二进制位
b.none()//是否不存在1
b.count()//1的个数
b.set()//所有位的值设为1
b.reset();//所有位置为0
b.flip();//所有二进制位逐位取反
b.to_ulong();//将二进制值返回为unsigned long值
unsigned long ulong=bitvec.to_ulong();
cout<<ulong<<endl;
3
cout<<bitvec;
0000000000000011;