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

1.使用前加上头文件:

     #include <bitset>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  <iostream>#include <stdio.h>#include <bitset>#include <string>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++

STL之bitset相关推荐

  1. 标准非STL容器 : bitset

    1. 概念 什么是"标准非STL容器"?标准非STL容器是指"可以认为它们是容器,但是他们并不满足STL容器的所有要求".前文提到的容器适配器stack.que ...

  2. STL中bitset的用法的整理

    构造函数 bitset<n> b;  b有n位,每位都为0.参数n可以为一个表达式. 如bitset<5> b0;则"b0"为"00000&quo ...

  3. 位运算 进制转化 STL中bitset用法

    2017-08-17 16:27:29 writer:pprp /* 题目名称:输入十进制以二进制显示 程序说明:同上 作者:pprp 备注:无 日期:2017/8/17 */ #include &l ...

  4. STL:bitset用法详解

    文章目录 前言 声明 输入输出 访问与修改 位运算 所谓bitset,就是bit组成的set (逃) 前言 bitset的诸多好处: 1.节约空间 2.增加一些新的功能 3.几乎没有副作用 4.有了1 ...

  5. STL学习小记--与C++模板相关的几个特性

    先谈谈模板在我脑子里的典型吧 template<class T> const T& GetMax(const T& t1, const T& t2) {return ...

  6. POJ3748 位操作【位运算+STL】

    位操作 Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 9433   Accepted: 3796 Description 假 ...

  7. bzoj2208 [Jsoi2010]连通数 强连通分量缩点+拓扑排序+bitset

    Description 对于100%的数据,N不超过2000. Solution 容易想到要tarjan缩点按拓扑序递推,但是去重的步骤不好弄 C++STL中有bitset,用这个当成二进制按位状压即 ...

  8. 范围元【2013 GDCPC】有为杯 广东ACM省赛小总结

    文章结束给大家来个程序员笑话:[M] 第一次加入生赛,心情万分激昂,我不是大牛,但是在子畦大牛的率领下,刚好排到了校赛的第20名,升级省赛. 广东的ACM省赛弄得非常好,无论是职员安排还是举办方对参赛 ...

  9. 基础练习 01字串(取位操作)

    基础练习 01字串 时间限制:1.0s 内存限制:256.0MB 提交此题 锦囊1 锦囊2 问题描述 对于长度为5位的一个01串,每一位都可能是0或1,一共有32种可能.它们的前几个是: 00000 ...

最新文章

  1. 什么才是有效的工程教育的方法?
  2. CentOS 6.5 手动rpm包安装gcc、g++
  3. CVPR 2019 行人检测新思路:高级语义特征检测取得精度新突破
  4. mongodb windows的安装方法和添加到任务管理器中、检测是否成功、增删改查命令...
  5. PAT---数字分类
  6. 面试 其实就是短时间内展现出你最好的自我
  7. 玻璃质感_几何体素描画法:几何体画法步骤教程和玻璃质感画法教程,快学习...
  8. 爱心的数学函数方程_笛卡尔的爱心函数
  9. 《下学梯航》(全文)
  10. 二手手机验机教程(不拆机)
  11. pandas分组计算平均值_Pandas之分组计算
  12. 计算机网络手写笔记图片,一键收藏!清华学子这样记笔记!
  13. 怎么在电脑上创建一个虚拟机
  14. 免费分享一个最完美的英语学习素材 Englishpod
  15. 【2023秋招】10月9日字节跳动校招题目以及满分解析
  16. 在c51语言的循环语句中 用作循环结束,在C51语言的循环语句中,用作循环结束条件判断的表达式为()...
  17. Windows10系统安装Oracle 11gR2
  18. svn co 的常用命令解释
  19. Teamcenter、TIA Portal、NX MCD是如何结合在一起的
  20. 自动剪辑视频的软件,视频自动剪辑生成软件如何剪辑视频和制作视频

热门文章

  1. 这个Python库助你发现网络图的社区结构
  2. 肝!22款超好用的CLI工具
  3. 良心之作!超过 10000+ 的互联网团队正在使用的在线 API 文档、技术文档工具
  4. 100 个网络基础知识,看完成半个网络高手
  5. 人工智能必看的 45 篇论文(附下载地址)
  6. 3分钟学会python_3分钟学会一个Python小技巧
  7. bitnamigitlab_Bitnami Gitlab 安装配置 step by step
  8. python 并发访问数据库_【数据库】如何实现python3实现并发访问水平切分表
  9. mysql数据库提示2005_Mysql数据库从本地导出 服务器上导入时报 ERROR 2005 HY000 Unknown MySQL ser...
  10. 语音特征提取: MFCC的理解