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"));     //0000001001
    bitset<10>s2(int(8));             //0000001000
    bitset<10>s3(8);                  //0000001000
    bitset<4>s4(string("10001"));     //1000
    bitset<4>s5(int(32));             //0000
    bitset<4>s6;                      //0000
    bitset<4>s7(a);                   //0101
    bitset<4>s8(b);                   //1011
    bitset<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;              //1
    cout<<s1<<endl;                 //1011
    cout<<(s1==s2)<<endl;           //0
    cout<<(s1!=s2)<<endl;           //1
    cout<<(s1^s2)<<endl;            //0011
    cout<<(s1&s2)<<endl;            //1000
    cout<<(s1|s2)<<endl;            //1011
    cout<<(~s1)<<endl;              //0100
    cout<<(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并返回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;

欢迎指出错误qw

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值