#include<iostream>
#include<cstring>
#include<cstdio>
#include<algorithm>
#include<bitset>
using namespace std;
int main()
{
//bitset的长度在设置的时候应该请确定
//可以单独访问某个元素例如bit[0]表示第一个元素
bitset<4> bit1;
cout<<bit1<<endl;//默认全为0
bitset<4> bit2(5);//设置初始值
cout<<bit2<<endl;
bitset<4> bit3(17);
cout<<bit3<<endl;//如果初始值大于位数,则高位舍弃,只保留低位
bitset<4> bit4(string("1111"));//用字符串初始化
cout<<bit4<<endl;
cout<<(bit2&bit3)<<endl;//注意加上括号
cout<<(bit2|bit3)<<endl;
cout<<(~bit1)<<endl;
cout<<(bit1^bit2)<<endl;
cout<<(bit1<<1)<<endl;
cout<<(bit2>>1)<<endl;
cout<<bit2.size()<<endl;//返回大小
cout<<bit2.count()<<endl;//返回1的数量
cout<<bit2.any()<<endl;//返回是否含有1
cout<<bit2.none()<<endl;//返回是否没有1
cout<<bit2.set()<<endl;//将所有位数设置为1
cout<<bit1.set(0)<<endl;//将第p+1为设置为1
cout<<bit1.set(0,0)<<endl;//将第p+1为设置为0
cout<<bit1.reset()<<endl;//全部变为0
cout<<bit1.reset(0)<<endl;//将第p+1为设置为0
cout<<bit1.flip(0)<<endl;//将第p+1位取反
cout<<bit1.to_string()<<endl;//将其转化位字符串输出
cout<<bit1.to_ulong()<<endl;//转化为unsinged long输出,超出范围则报错
cout<<bit1.to_ullong()<<endl;//转化为unsigned long long,超出范围则报错
cout<<bit1[0]<<endl;
printf("%s\n",bit1);//默认是z z字符串类型的
for(int i=3;i>=0;i--)
{
x=x*2+bit[i];//可以进行算数计算
}
cout<<x;
return 0;
}
bitset的基本用法
于 2022-08-03 15:46:51 首次发布