bitset
bitset是C++标准库提供的用于处理位集的类模板,所谓”位集“,就是指由0和1组成的有限长度的有序集,也称为“标志位”集合。
使用bitset类,必须包含相关的头文件 #include <bitset> using std::bitset
bitset有几种形式的构造函数,由于bitset是一个类模板,所以在使用bitset的时候,必须对其实例化。bitset类模板只带一个非类
型参数,表示类对象封装的二进制位的个数。
具体的看是看例子吧:
#include <iostream> #include <bitset> using std::bitset; using std::cout; using std::endl; int main() { std::string bitval; bitset<8> bs1; bitset<8> bs2(012); //用一个数实例化bitset bitval = "0110001"; bitset<8> bs3(bitval); //用一个string类型的对象初始化bitset bitset<8> bs4(bitval, 2, 6); bitset<20> bs5(bitval, 3); cout<<bs1<<endl; cout<<bs2<<endl; cout<<bs3<<endl; cout<<bs4<<endl; cout<<bs5<<endl; cout<<bs5.count()<<endl; //计算bitset中的位为1的个数 bs5.flip(0); //在某位取反 cout<<bs5<<endl; cout<<bs5.count()<<endl; //计算bitset中的位为1的个数 cout<<bs5.size()<<endl; //去bitset的长度,位的个数 return 0; }
需要注意的几点:
用string对象初始化bitset时,string对象中位的序号是从左到右编排的,而在bitset中位的序号是从右到左的,千万别搞混了。