bitset求二进制
作者:
牛奶小柒Luke
,
2021-03-06 14:33:03
,
所有人可见
,
阅读 553
1.bitset是一种类似于数组的结构,不过区别是只能存1or0,而且优化内存空间,一个元素只占1bit
2.相关输出只能用cout
3.bitset的大小在编译时已经确定了
构造
1.<>里的参数表示bitset的大小
2.不够的位数自动补0
3.size小于附的值时,int取后几位,string取前几位
4.(类型(赋值)),int可忽略类型
5.也可以先规定一个变量,再把该变量赋值给bitset
6.赋值字符串时只能用01字符串
7.不进行赋初值时,默认全部为0
如C++中明码问题用bitset更为方便
基础运算
1.可以用[]进行下标访问和修改
2.二进制中&,|,^,~,>>,<<都可以进行
3.可用!=和==,返回0or1
几个函数
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并返回0or1
cout<<s1.any()<<endl;//检查s1中是否有1,并返回1or0
cout<<s1.all()<<endl;//检查s1中是否全部为1,并返回0or1
cout<<s1.none()<<endl;//检查s1中是否全不为1,并返回0or1
cout<<s1.flip(2)<<endl;//将参数位取反,0变1,1变0
cout<<s1.flip()<<endl;//不指定参数时,每一位取反
cout<<s1.set()<<endl;//不指定参数时,每一位变为1
cout<<s1.set(3,1)<<endl;//指定两位参数时,将第一参数位的元素变为第二参数的值,第二参数位只能为0or1
cout<<s1.set(3)<<endl;//只有一个参数时,将参数下标处变为1
cout<<s1.reset(4)<<endl;//一个参数时将参数下标处变为0
cout<<s1.reset()<<endl;//不传参数时将bitset的每一位变为0
string s = s1.to_string(); //将bitset转换成string
unsigned long a = s1.to_ulong(); //将bitset转换成unsigned long
unsigned long long b = s1.to_ullong(); //将bitset转换成unsigned long long
cout<<s<<endl;
cout<<a<<endl;
cout<<b<<endl;