bitset用法总结

第一行国际惯例咕咕咕。

第二行——学习之路任重而道远。

 

以下为正文:

1.bitset是一种类似于数组的结构,不过区别是只能存1or0,而且优化内存空间,一个元素只占1bit

2.相关输出只能用cout

3.bitset的大小在编译时已经确定了

构造

1.<>里的参数表示bitset的大小

2.不够的位数自动补0

3.size小于附的值时,int取后几位,string取前几位

4.(类型(赋值)),int可忽略类型

5.也可以先规定一个变量,再把该变量赋值给bitset

6.赋值字符串时只能用01字符串

7.不进行赋初值时,默认全部为0

    int a = 5;string b = "1011";char c[4] = {'1','0','1','0'};bitset<10>s1(string("1001"));     //0000001001bitset<10>s2(int(8));             //0000001000bitset<10>s3(8);                  //0000001000bitset<4>s4(string("10001"));     //1000bitset<4>s5(int(32));             //0000bitset<4>s6;                      //0000bitset<4>s7(a);                   //0101bitset<4>s8(b);                   //1011bitset<4>s9(c);                   //1010

基础运算

1.可以用[]进行下标访问和修改

2.二进制中&,|,^,~,>>,<<都可以进行

3.可用!=和==,返回0or1

    bitset<4>s1(string("1001"));bitset<4>s2(string("1000"));s1[1] = 1;                    cout<<s1[0]<<endl;              //1cout<<s1<<endl;                 //1011cout<<(s1==s2)<<endl;           //0cout<<(s1!=s2)<<endl;           //1cout<<(s1^s2)<<endl;            //0011cout<<(s1&s2)<<endl;            //1000cout<<(s1|s2)<<endl;            //1011cout<<(~s1)<<endl;              //0100cout<<(s1>>1)<<endl;            //0101

几个函数

    bitset<4>s1(string("1001"));bitset<4>s2(string("0011"));cout<<s1.count()<<endl;//用于计算s1中1的个数cout<<s1.size()<<endl;//s1的位数cout<<s1.test(0)<<endl;//用于检查s1[0]是0or1并返回0or1cout<<s1.any()<<endl;//检查s1中是否有1,并返回1or0cout<<s1.all()<<endl;//检查s1中是否全部为1,并返回0or1cout<<s1.none()<<endl;//检查s1中是否全不为1,并返回0or1cout<<s1.flip(2)<<endl;//将参数位取反,0变1,1变0cout<<s1.flip()<<endl;//不指定参数时,每一位取反cout<<s1.set()<<endl;//不指定参数时,每一位变为1cout<<s1.set(3,1)<<endl;//指定两位参数时,将第一参数位的元素变为第二参数的值,第二参数位只能为0or1cout<<s1.set(3)<<endl;//只有一个参数时,将参数下标处变为1cout<<s1.reset(4)<<endl;//一个参数时将参数下标处变为0cout<<s1.reset()<<endl;//不传参数时将bitset的每一位变为0string s = s1.to_string();  //将bitset转换成stringunsigned long a = s1.to_ulong();  //将bitset转换成unsigned longunsigned long long b = s1.to_ullong();  //将bitset转换成unsigned long longcout<<s<<endl;cout<<a<<endl;cout<<b<<endl;

欢迎指出错误qw

本文链接:https://my.lmcjl.com/post/3800.html

展开阅读全文

4 评论

留下您的评论.