1、头文件
#include<bitset>
using std::bitset;//若有using namespace std,可免。
2、定义和初始化
1.bitset<n> b; //必须要明确位数,b=0...0
2.bitset<n> b(ui); //ui是一个unsigned类型的整型变量;
bitset<8> b(5); //b=00000101
bitset<8> b=5; //b=00000101
3.bitset<n> b(str); //str是一个string类型的对象,其元素必须为'0'或'1'。
bitset<n> b(str,pos); //str中从pos开始之后的元素。 !!注意方向
bitset<n> b<str,pos,n> //str中从pos开始之后的n个元素。!!注意方向
string s="011101";
bitset<8> b(s); //b=00011101
bitset<8> b(s,2); //b=00001101
bitset<8> b(s,2,3); //b=00000110
bitset<8> b("011101"); //错误:不存在从 "const char [7]" 转换到"std::bitset<8Ui64>" 的适当构造函数
3、bitset对象上的操作
bitset的操作
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.set() 把b中所有二进制位都置为1 b.set(pos) 把b中在pos处的二进制位置为1 b.reset() 把b中所有二进制位都置为0 b.reset(pos) 把b中在pos处的二进制位置为0 b.flip() 把b中所有二进制位逐位取反 b.flip(pos) 把b中在pos处的二进制位取反 b.to_ulong() 用b中同样的二进制位返回一个unsigned long值 os << b 把b中的位集输出到os流
b.count()返回的是标准库中名为size_t的类型,size_t定义在cstddef头文件中,是一个与机器相关的unsigned类型。
bitset<32> b; size_t sz = b.size(); //return 32;
获取bitset对象的值
bitset<16> b(5); int i1=b.to_ulong(); //i1=5 int i2=b.to_ullong(); //i2=5 string str=b.to_string(); //str="0101"
- 5.