zoukankan      html  css  js  c++  java
  • STL

    STL - bitset 小结

    声明:

    #include <bitset>
    using std::bitset;

    申请对象以及初始化:

    bitset<n> b;

    b有n位,每位都为0

    bitset<n> b(u);

    b是unsigned long型u的一个副本

    bitset<n> b(s);

    b是string对象s中含有的位串的副本

    bitset<n> b(s, pos, n);

    b是s中从位置pos开始的n个位的副本

    对象的操作:

    b.any()

    b中是否存在置为1的二进制位? 返回 bool

    b.none()

    b中不存在置为1的二进制位吗? 返回 bool

    b.count()

    b中置为1的二进制位的个数   返回 size_t

    b.size()

    b中二进制位的个数

    b[pos]

    访问b中在pos处的二进制位

    b.test(pos)

    b中在pos处的二进制位是否为1?  返回bool

    b.set()

    把b中所有二进制位都置为1

    b.set(pos)

    把b中在pos处的二进制位置为1

    b.reset()

    把b中所有二进制位都置为0

    b.reset(pos)

    把b中在pos处的二进制位置为0

    b.flip()

    把b中所有二进制位逐位取反

    b.flip(pos)

    把b中在pos处的二进制位取反

    b.to_ulong()

    用b中同样的二进制位返回一个unsigned long值

    os << b

    把b中的位集输出到os流

    每行的数字转换为二进制后代表一个汉字的16*16像素信息(1代表墨迹,0代表无墨迹)。

     1 #include <iostream>
     2 #include <bitset>
     3 using namespace std;
     4 int main()
     5 {
     6     int n,m;
     7     while(cin>>n>>m)
     8     {
     9         bitset<8> t(n);//创建对象的时候可以直接传进去一个数
    10         for(int i = t.size()-1; i >= 0; i--)
    11             if(t[i] == 1) printf("*");
    12             else printf(" ");
    13         //cout<<t;  //也可以直接输出二进制
    14         t = m;//也可以直接赋值
    15         for(int i = t.size()-1; i >= 0; i--)
    16             if(t[i] == 1) printf("*");
    17             else printf(" ");
    18         puts("");
    19 //        cout<<t<<endl;    //也可以直接输出二进制
    20     }
    21 }
    22 
    23 /*
    24 4 0 4 0 4 0 4 32 -1 -16 4 32 4 32 4 32 4 32 4 32 8 32 8 32 16 34 16 34 32 30 -64 0
    25 16 64 16 64 34 68 127 126 66 -124 67 4 66 4 66 -124 126 100 66 36 66 4 66 4 66 4 126 4 66 40 0 16
    26 4 0 4 0 4 0 4 32 -1 -16 4 32 4 32 4 32 4 32 4 32 8 32 8 32 16 34 16 34 32 30 -64 0
    27 0 -128 64 -128 48 -128 17 8 1 -4 2 8 8 80 16 64 32 64 -32 64 32 -96 32 -96 33 16 34 8 36 14 40 4
    28 4 0 3 0 1 0 0 4 -1 -2 4 0 4 16 7 -8 4 16 4 16 4 16 8 16 8 16 16 16 32 -96 64 64
    29 16 64 20 72 62 -4 73 32 5 16 1 0 63 -8 1 0 -1 -2 0 64 0 80 63 -8 8 64 4 64 1 64 0 -128
    30 0 16 63 -8 1 0 1 0 1 0 1 4 -1 -2 1 0 1 0 1 0 1 0 1 0 1 0 1 0 5 0 2 0
    31 2 0 2 0 7 -16 8 32 24 64 37 -128 2 -128 12 -128 113 -4 2 8 12 16 18 32 33 -64 1 0 14 0 112 0
    32 1 0 1 0 1 0 9 32 9 16 17 12 17 4 33 16 65 16 1 32 1 64 0 -128 1 0 2 0 12 0 112 0
    33 0 0 0 0 7 -16 24 24 48 12 56 12 0 56 0 -32 0 -64 0 -128 0 0 0 0 1 -128 3 -64 1 -128 0 0
    34 */

    b.to_string() 转换为 string

     1 // bitset::to_string
     2 #include <iostream>       // std::cout
     3 #include <string>         // std::string
     4 #include <bitset>         // std::bitset
     5 
     6 int main ()
     7 {
     8   std::bitset<4> mybits;     // mybits: 0000
     9   mybits.set();              // mybits: 1111
    10 
    11   std::string mystring =
    12     mybits.to_string<char,std::string::traits_type,std::string::allocator_type>();
    13 
    14   std::cout << "mystring: " << mystring << '
    ';
    15 
    16   return 0;
    17 }
    View Code

    b.to_ulong()转换为 unsigned long

    b.to_ullong() 转换为 unsigned longlong

     1 // bitset::to_ulong
     2 #include <iostream>       // std::cout
     3 #include <bitset>         // std::bitset
     4 
     5 int main ()
     6 {
     7   std::bitset<4> foo;     // foo: 0000
     8   foo.set();              // foo: 1111
     9 
    10   std::cout << foo << " as an integer is: " << foo.to_ulong() << '
    ';
    11 
    12   return 0;
    13 }
    View Code
  • 相关阅读:
    利用HttpClient进行带参数的http文件上传
    使用mysqlproxy 快速实现mysql 集群 读写分离 [转]
    SQL Server Express 自动备份方法
    screen 配置文件
    linux启动DHCP
    dynamic table_name in cursor
    LogMiner and supplemental logging
    RAC 规划配置网络环境
    RAC prepare OS and installation media
    一次导数据流程
  • 原文地址:https://www.cnblogs.com/ymzjj/p/10453641.html
Copyright © 2011-2022 走看看