zoukankan      html  css  js  c++  java
  • 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流

    好了终于弄明白了。

  • 相关阅读:
    VS2013搭建wxWidgets开发环境
    LinuxSystemProgramming-Syllabus
    Python入门2(Python与C语言语法的不同、Notepad++运行Python代码)
    Python入门1(简介、安装)
    面试题收集---grep和find的区别
    浅拷贝 和深拷贝
    使用 system.io.filesysteminfo 来查找文件。
    使用FileSystemWatcher捕获系统文件状态
    system.io.file创建
    Javascript诞生记 [转载]
  • 原文地址:https://www.cnblogs.com/rootial/p/3902078.html
Copyright © 2011-2022 走看看