zoukankan      html  css  js  c++  java
  • STL————bitset

    C++的 bitset 在 bitset 头文件中,它是一种类似数组的结构,它的每一个元素只能是0或1,每个元素仅用1bit空间。

     1 bitset<4> bitset1;  //无参构造,长度为4,默认每一位为0
     2 
     3 bitset<8> bitset2(12);  //长度为8,二进制保存,前面用0补充,把12转成二进制
     4 
     5 string s = "100101";
     6 bitset<10> bitset3(s);  //长度为10,前面用0补充
     7     
     8 char s2[] = "10101";
     9 bitset<13> bitset4(s2);  //长度为13,前面用0补充
    10 
    11 cout << bitset1 << endl;  //0000
    12 cout << bitset2 << endl;  //00001100
    13 cout << bitset3 << endl;  //0000100101
    14 cout << bitset4 << endl;  //0000000010101

    用字符串构造时,字符串只能包含 '0' 或 '1' ,否则会抛出异常。

    构造时,需在<>中表明bitset 的大小(即size)。

    在进行有参构造时,若参数的二进制表示比bitset的size小,则在前面用0补充(如上面的栗子);

    若比bitsize大,参数为整数时取后面部分,参数为字符串时取前面部分(如下面栗子):

     1 bitset<2> bitset1(12);  //12的二进制为1100(长度为4),但bitset1的size=2,只取后面部分,即00
     2 
     3 string s = "100101";  
     4 bitset<4> bitset2(s);  //s的size=6,而bitset的size=4,只取前面部分,即1001
     5 
     6 char s2[] = "11101";
     7 bitset<4> bitset3(s2);  //与bitset2同理,只取前面部分,即1110
     8 
     9 cout << bitset1 << endl;  //00
    10 cout << bitset2 << endl;  //1001
    11 cout << bitset3 << endl;  //1110

     to_ulong()

    输出是用到了to_long()来输出,这个是用来控制bitset中的输出宽度的。

    1110和10001的二进制都超过了初始设定的长度。

    1 bitset<4> bit(1110); //将十进制1110转化成二进制只有,取后面四位,得到6
    2 cout<<bit.to_ulong()<<endl; 
    3 bitset<5> ait(10001);//将十进制10001转换为二进制之后,取后面5位,得到17
    4 cout<<ait.to_ulong()<<endl;

     conunt

    返回的是1的个数。

    bitset.count();//返回的是1的个数

    bitset.size()-bitset.count();//这样就是0的个数

  • 相关阅读:
    ES6之模块化
    ES6之展开运算符
    ES6之解构赋值
    ES6之对象的语法糖
    ES6之函数的语法糖
    ES6之模板字符串
    Exchanger详解
    DNS解析过程
    CyclicBarrier详解
    ConuntDownLatch详解
  • 原文地址:https://www.cnblogs.com/pacino12134/p/11045711.html
Copyright © 2011-2022 走看看