zoukankan      html  css  js  c++  java
  • bitset用法

    头文件:#include <bitset>

    bitset类型在定义时就需要指定所占的空间,例如

    bitset<233>bit;
    

    bitset类型可以用string和整数初始化(整数转化成对应的二进制)

    int main()
    {
        bitset<23>bit (string("11101001"));
        cout<<bit<<endl;
        bit=233;
        cout<<bit<<endl;
        return 0;
    }
    
    /*
    00000000000000011101001
    00000000000000011101001
    */

    bitset支持所有的位运算

    bitset<8> foo ("10011011");
    
        cout << foo.count() << endl;  //5  (count函数用来求bitset中1的位数,foo中共有5个1
        cout << foo.size() << endl;   //8  (size函数用来求bitset的大小,一共有8位
    
        cout << foo.test(0) << endl;  //true  (test函数用来查下标处的元素是0还是1,并返回false或true,此处foo[0]为1,返回true
        cout << foo.test(2) << endl;  //false  (同理,foo[2]为0,返回false
    
        cout << foo.any() << endl;  //true  (any函数检查bitset中是否有1
        cout << foo.none() << endl;  //false  (none函数检查bitset中是否没有1
        cout << foo.all() << endl;  //false  (all函数检查bitset中是全部为1
    bitset<8> foo ("10011011");
    
        cout << foo.flip(2) << endl;  //10011111  (flip函数传参数时,用于将参数位取反,本行代码将foo下标2处"反转",即0变1,1变0
        cout << foo.flip() << endl;   //01100000  (flip函数不指定参数时,将bitset每一位全部取反
    
        cout << foo.set() << endl;    //11111111  (set函数不指定参数时,将bitset的每一位全部置为1
        cout << foo.set(3,0) << endl;  //11110111  (set函数指定两位参数时,将第一参数位的元素置为第二参数的值,本行对foo的操作相当于foo[3]=0
        cout << foo.set(3) << endl;    //11111111  (set函数只有一个参数时,将参数下标处置为1
    
        cout << foo.reset(4) << endl;  //11101111  (reset函数传一个参数时将参数下标处置为0
        cout << foo.reset() << endl;   //00000000  (reset函数不传参数时将bitset的每一位全部置为0
  • 相关阅读:
    【C++】小心使用文件读写模式:回车(' ') 换行(' ')问题的一次纠结经历
    小记同学一次奇葩的DNS欺骗实验失败经历
    IE的BHO通过IHTMLDocument2接口获得网页源代码
    HTML5离线缓存攻击测试(二)
    HTML5离线缓存攻击测试
    PHP防止SQL注入的方法
    Linux系统环境变量的四个配置文件的关系
    CentOS 7 上搭建LNMP环境
    [Linux][Nginx][02]Config
    [Linux][Nginx][01]Install
  • 原文地址:https://www.cnblogs.com/-Ackerman/p/12292379.html
Copyright © 2011-2022 走看看