zoukankan      html  css  js  c++  java
  • bitset

    有些程序要处理二进制位的有序集,每一个位可能包含0 1值。位是用来保存一组项或条件的yes/no信息的简介方法。标准库提供的bitset类简化了位集的处理。

    头文件及其声明:

    #include<bitset>
    using std::bitset;

    bitset对象的初始化和定义

    初始化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开始的&nbps;n个位副本

    bitset<32>bitves://32位,全部都是0;

    用string对象初始化bitset对象

    string对象直接表示为位模式。从string对象读入位集的顺序是从右向左:

    string  strval("1100");

    bitset<32> bitvect(strval);

    string对象和bitset对象之间是反向转化:string对象的最右边字符(即下标最大的那个字符)用来初始化bitset对象的低阶位

    (即下标为0位)。当用string对象初始化bitset对象时,要记住这一差别。

    例1:

    View Code
     1 #include<iostream>
     2 #include<string>
     3 #include<bitset>//bitset头文件
     4 using namespace std;
     5 using std::string;
     6 using std::bitset;
     7 int main()
     8 {
     9    string str("1001001100") ;
    10    bitset<32>bitvec5(str,6,4);
    11    cout<<bitvec5<<endl;
    12    return 0;
    13 }

    输出结果:

    这里用str从第六位的1开始 取四位 1100 ,bitvec5的从3到0的二进制位置1100,其他二进制都置为0。

    例2:

    View Code
     1 #include<iostream>
     2 #include<vector>//包含头文件
     3 #include<string>
     4 #include<bitset>
     5 using namespace std;
     6 using std::string;
     7 using std::vector;
     8 using std::bitset;
     9 int main()
    10 {
    11    string str("1001001100") ;
    12    bitset<32>bitvec5(str,str.size()-4);//use last 4
    13    cout<<bitvec5<<endl;
    14    return 0;
    15 }

    输出结果:

    本例中,取出str末尾的四位来对bitvec5的低四位进行初始化。bitvec5其余的位初始化为0.

    bitset对象上的操作

                  

    bitset操作
    b.any() b中是否存在置为1的二进制?
    b.none() b中不存在置为1的二进制位?
    b.count() b中置为1的二进制的个数
    b.size() b中二进制位的个数
    b[pos] 访问b中的pos处二进制
    b.test(pos) b中在pos处的二进制位置为1吗?
    b.set() 把b中所有二进制都置为1
    b.set(pos) 把b中在pos处的二进制位置为1
    b.reset() 把b中所有二进制位都置为0
    b.reset(pos) 把b中在pos处的二进制位置为0
    b.flip() 把b中在pos处的二进制位取反
    b.to_ulong() 把b中同样的二进制位返回一个unsign long值
    os<<b 把b中的位集输出到os流
       
       
  • 相关阅读:
    第七周CorelDRAW课总结
    第七周CorelDRAW课总结
    hive基本操作与应用
    hive基本操作与应用
    hive基本操作与应用
    hive基本操作与应用
    Linux运维面试题:请简要说明Linux系统在目标板上的启动过程?
    Linux运维面试题:请简要说明Linux系统在目标板上的启动过程?
    arcserver开发小结(一)
    xgqfrms™, xgqfrms® : xgqfrms's offical website of GitHub!
  • 原文地址:https://www.cnblogs.com/canyuexingchen/p/2637056.html
Copyright © 2011-2022 走看看