bitset的一些操作总结

 

/******************************************************************
** 文件名:bitset.cpp
** Copyright (c) 2009 *********
** 创建人: Xredman
** 日期: 6.2
** 修改人:
** 日期:
** 描述: 本程序实现对bitset的一些操作,主要用于熟悉位操作
**
** 版本:
**--------------------------------------------------------------------------
---
******************************************************************/


#include <iostream>
#include <bitset>
#include <string>
using namespace std;

int main()
{
        /*-----声明-----*/

        bitset<32> bt1;
        /*位的计数从0开始,即0~31
          缺省情况下,所有的位都被初始化为0
        */


        bitset<32> bit2(0xffff);//位构造函数显式提供一个无符号参数

        string bitval("1010");
        bitset<32> bit3(bitval);

        if(bt1.any())//当bitset对象含有一位或多位被置为1时,返回true
                cout<<"初始化是含有1."<<endl;
        else if(bt1.none())//当bitset对象不含有1时,返回true
                cout<<"初始化是不含1."<<endl;

        /*--------置位操作----------*/

        bt1[26] = 1;//将26位设置为1
        bt1.set(27);//将27位设置为1

        bt1[26] = 0;//将26位设置为0
        bt1.reset(26);//将26位设置为0

        /*全部置位
        bt1.set();
        bt1.reset();*/


        cout<<"被置为1的位数有:"<<bt1.count()<<endl;
        //返回被置为1的的位的个数

        if(bt1.test(27))//或者用下标操作符bt1[27]
                cout<<"第27位被置为1."<<endl;

        /*-----翻转操作-----*/

        bt1.flip(0);//翻转第0位
        bt1[1].flip();//翻转第1位
        bt1.flip();//全部翻转

        /*-----类型转化-----*/

        string sbt = bt1.to_string();
        unsigned long lbt = bt1.to_ulong();
       

        return 0;
}