• bitset学习小记


    Cplusplus官网的资料:

    http://www.cplusplus.com/reference/bitset/bitset/

    http://www.cplusplus.com/reference/bitset/bitset/bitset/

    bitset作为STL中一个位集,主要在涉及二进制位存储,操作时比较方便。

    定义及基本操作:

    bitset<n> b,定义一个包含n个二进制位的变量。

    可以通过unsigned 值或string类型来初始化,如:

    bitset<32> b(0xFFFF),表示将前16位初始化为1,后16位初始化为0;

    string str = "1111111111111111";

    bitset<32> b(str),作用同上,注意利用字符串初始化时,首先从字符串右端读入,并将其作为低位的值,

    string str = "011";

    bitset<32> b(str), 最低位开始依次为1, 1, 0,且长度不足时高位补0, 超过b的长度时,将字符串左端丢弃。

    还可以指定字符串开始赋值的位置,和赋值长度。

    string str = "10111";

    bitset<5> b(str, 2, 3);

    将字符串左端开始的第2个字符(最左端为第0个), 长度为3的字符串赋值给b,不足时,这里b的高位补0了。

    b此时相当字符串”00111“。

    常用转化函数

    to_ulong ();返回二进制串表示的unsigned long值;

    to_string();返回string值。

    应当特别注意的是,将b输出时,不论是以相应整数,还是相应字符串输出时,低位都应该在输出位置的右端,

    string str = "011";

    bitset<5> b(str);

    cout<<b<<endl;

    cout<<b.to_string();

    上述输出为:

    00011

    00011

    常用成员函数:

    any()             是否存在位置为1的二进制位

    none()          不存在置为1的二进制位?

    count()         置为1的二进制位的个数

    size()            总的二进制位的个数

    [pos]            访问在pos处的二进制位

    test(pos)     pos处的二进制位是否为1

    set()             所有位都置1

    set(pos)              pos处的二进制置1

    reset()         所有二进制置0

    reset(pos)   pos处的二进制位置0

    flip()             所有位置反

    flip(pos)              pos位置反

    to_ulong()   返回一个 unsigned long 值

    os<<b           位集输出到os流

    好了终于弄明白了。

  • 相关阅读:
    Django的cmdb探索与开发(二)
    Django的cmdb探索与开发(一)
    通过itchat调用zabbixAPI实现微信确认zabbix告警
    zabbix自定义脚本监控docker容器学习及记录
    HTML5的三种存储方式以及区别
    Less基本语法的使用方法
    css/less画三角形
    前端性能优化
    前端实时可视化开发工具
    Sublime txt 安装、查看、升级、删除插件
  • 原文地址:https://www.cnblogs.com/rootial/p/3902078.html
Copyright © 2020-2023  润新知