STL之bitset

bitset是C++的类库,它便于我们管理一系列的bit位。

1.使用前加上头文件:

     #include using namespace std;//2.bitset的构造:bitset<bitNum>b; //具有bitNUm位的b/*3.bitset的操作:1)b.all()//b中是否全是12)b.any()//b中是否存在值为1的二进制位?3)b.none()//b中不存在值为1的二进制位吗?4)b.count()//b中含有多少个值为1的二进制位5)b[pos]//访问b在pos位中的二进制(最右边的位为第一位(b[0]))6)b.set()//把b中所有二进制位都置为17)b.set(pos)//把b中  b[pos]  置为18)b.reset()//把b中所有二进制位都置为09)b.reset(pos)//把b中 b[pos]  置为010)b.flip()//把b中所有二进制逐位取反11)b.flip(pos)//把b中b[pos]取反12)b.to_string()//用b中同样的二进制位返回一个字符串13)b.to_ulong()//用b中同样的二进制位返回一个unsigned long值14) b.to_ullong()//用b中同样的二进制位返回一个unsigned long long值
*///测试代码:#include  #include #include #include using namespace std;int main(){bitset<5>b,c;//具有5个bit位的bitset b,c//0的二进制:00000//30的二进制:01111b = 0;//从右往左,将30的5个bit位存入bitset b,此时b相当一个数组,下标从0开始c = 30;//printf("%d",b[0]);编译,出现错误,使用bitset不能用printf来访问cout<<"b: "<<b<<endl;cout<<"c: "<<c<<endl;cout<<"c二进制位全是1吗? "<<c.all()<<endl;cout<<"c 的bit位数  "<<c.size()<<endl;//之前定义的时候,bitNUm只取了5位cout<<"b中存在为1的二进制吗? "<<b.any()<<"  c中存在为1的二进制吗? "<<c.any()<<endl;cout<<"b中不存在为1的二进制吗? "<<b.none()<<"  c中不存在为1的二进制吗? "<<c.none()<<endl;cout<<"b中有多少个为1的二进制位? "<<b.count()<<"  c中有多少个为1的二进制位? "<<c.count()<<endl;cout<<"b的第1位是:"<<b[0]<<endl;cout<<"b的第5位是:"<<b[4]<<endl;cout<<"c的第1位是:"<<c[0]<<endl;cout<<"c的第5位是:"<<c[4]<<endl;b.set();cout<<"经过b.set()后,b变为"<<b<<endl;b.reset();cout<<"再经过b.reset()后,b变为"<<b<<endl;c.set(0);cout<<"经过c.set(0)后,c的第1位(c[0])变为:"<<c[0]<<endl;c.reset(0);cout<<"经过c.reset(0)后,c的第1位变为:"<<c[0]<<endl;b.flip();cout<<"再经过b.flip()后,b变为"<<b<<endl;b.flip(4);cout<<"经过b.flip(4),b的第5位变为:"<<b[4]<<endl;cout<<"b转换为同样的字符串形式:";string s = b.to_string();cout<<s<<endl;cout<<"b的二进制位返回的unsigned long:";unsigned long x = b.to_ulong();cout<<x<<endl;return 0;}

在这里插入图片描述
官方通道: bitset reference C++


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部