bitest(位集合)------c++程序设计原理与实践(进阶篇)
发布日期:2022-04-04 06:36:21
浏览次数:18
分类:博客文章
本文共 1279 字,大约阅读时间需要 4 分钟。
标准库模板类bitset是在<bitset>中定义的,它用于描述和处理二进制位集合。每个bitset的大小是固定的,在创建时指定:
bitset<4> flags;bitset<128> dword_bits;bitset<12345> lots;
默认情况下,bitset被初始化为全0,但通常我们都会给它一个初始值,可以是一个无符号的整数或者”0“和”1“组成的字符串。例如:
bitset<4> flags=0xb;bitset<128>dword_bits{string{"1010101010101010"}};bitset<12345>lots;
这两段代码中,lots被初始化为全0,dword_bits的钱112为被初始化为全0,后16位由程序显式指定。如果你给出的初始化字符串中包含0和1之外的符号,bitset会抛出一个std::invalid_argument异常:
string s;cin>>s;bitset<12345> my_bits(s); //可能抛出std::invalid_argument
常用的位运算符都可用于bitset。例如,假定b1、b2和b3都是bitset:
b1=b2&b3; //与b1=b2|b3; //或b1=b2^b3; //异或b1=~b2; //补b1=b2<<2; //左移b1=b2>>3; //右移
大致来说,对于位运算而言,bitset就像unsigned int 一样,只不过其大小任意,由用户指定。你能对unsigned int 做什么(除了算术运算之外),就能对bitset做什么。特别地,bitset对I/O也很有用:
cin>>b; //从输入读取一个bitsetcout<<8>('c'); //输出字符'c'的位模式
当读入bitset时,输入流会寻找0和1,例如,如果输入下面的内容:
10121
输入流会读入101,21会被留下。
对于字节和字,bitset中的位是由右至左编号的(从最低有效位到最高有效位)。这样,第7位的值就是27;
7: | 6: | 5: | 4: | 3: | 2: | 1: | 0: |
1 | 0 | 1 | 0 | 0 | 1 | 1 | 1 |
对于bitset而言,编号顺序不仅仅是遵循惯例的问题,还起到二进制位的索引下标的作用。例如:
#include#include using namespace std;int main(){ int n; const int j = n; constexpr int max = 10; for (bitset b; cin >> b;) { cout << b << '\n'; for (int i = 0; i < max; ++i)cout << b[i]; cout << '\n'; }}
c++程序设计原理与实践(进阶篇)
转载地址:https://www.cnblogs.com/l2017/p/7845966.html 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
哈哈,博客排版真的漂亮呢~
[***.90.31.176]2024年04月08日 11时19分59秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
知识焦虑
2019-04-26
6个月达不到25.6万年薪AI工程师、进不了大厂全额退款
2019-04-26
CRUD就是技术开发的while(1),干掉它你才能升职加薪
2019-04-26
普普通通,我的三年大学
2019-04-26
圈层效应
2019-04-26
介绍一位算法工程师,告诉你如何自学进大厂!
2019-04-26
程序员千万不能有的短板,叫“我只会技术”
2019-04-26
大公司进不去,待在小公司,有前途吗?
2019-04-26
2019余额不足,技术人如何高效充电?
2019-04-26
谷歌官方首次提及Android 11
2019-04-26
程序员相亲图鉴
2019-04-26
安卓从入门到进阶第十章(Smali调试)
2019-04-26
计算机学生如何规划好大学四年的学习?
2019-04-26
给大家推荐一位我非常佩服的Python工程师 && 人生赢家
2019-04-26
1w+的心路历程
2019-04-26
点线面理论
2019-04-26
内存里都装了些什么?
2019-04-26
90后朋友胖哥,教你用技术赚到人生第一桶金
2019-04-26
十一国庆“堵车”,有可能只是测试程序员在加班!
2019-04-26