bitset模板

Author Avatar
Axell 10月 20, 2018
  • 在其它设备中阅读本文章

构造方式

//构造函数1
#include <iostream>
#include <bitset>//必须引入该头文件
using namespace std;//全局位数组512M内存环境下数组大小可开到5000万以上

int main()
{
  bitset<5000000> bin;//bin为位数组,初始为0,一般512M内存上限约为500万
  bin[0]=1;//设为1
  bin[1]=true;
  bin[2]=0;//设为0
  bin[3]=false;
  cout<<bin[0]<<bin[1]<<bin[2]<<bin[3]<<bin[4];//打印出11000
  system("pause");
}


//构造函数2
#include <iostream>
#include <bitset>//
using namespace std;

int main()
{
  bitset<5> bin(5);//从左向右赋值
  for(int i=0;i<=4;i++)
    cout<<bin[i];//打印出10100
  system("pause");
}


//构造函数3
#include <iostream>
#include <bitset>
using namespace std;

int main()
{
  string temp="1010111100";
  bitset<10> bin(temp);
  for(int i=0;i<=9;i++)
    cout<<bin[i];//打印出0011110101,注意,是从左向右依次填入的
  system("pause");
}


//构造函数4
#include <iostream>
#include <bitset>
using namespace std;

int main()
{
  string temp="1010111101";
  bitset<10> bin(temp,4);//从第4位开始取值,包括第0位
  for(int i=0;i<=9;i++)
    cout<<bin[i];//打印出1011110000,注意,是从左向右依次填入的
  system("pause");
}


//构造函数5
#include <iostream>
#include <bitset>
using namespace std;

int main()
{
  string temp="1010111101";
  bitset<10> bin(temp,4,5);//从第4个元素开始往后取5个元素,其余填作0
  for(int i=0;i<=9;i++)
    cout<<bin[i];//打印出0111100000,注意,是从左向右依次填入的
  system("pause");
}

bitset模板:

#include <iostream>
#include <bitset>
using namespace std;
string temp="1010111101";
bitset<10> bin(temp);

void out()
{
  for(int i=0;i<=9;i++)
    cout<<bin[i];
  cout<<endl;  
}

int main()
{
  out();
  cout<<endl<<bin.any()<<endl;//是否存在置为1的位数
  cout<<bin.none()<<endl;//是否全部为0,与any()相反
  cout<<bin.count()<<endl;//二进制为1的个数
  cout<<bin.size()<<endl;//总长度
  bin.flip();//二进制位依次取反
  out();
  bin.flip(0);//第零位取反
  out();
  cout<<bin.operator[](2)<<endl;//获取第2位的值
  bin.set();//将所有位全置为1
  out();   
  bin.reset();//将所有位全置为0
  out();
  bin.set(0);//将第0位置为1
  out();
  bin.reset(0);//将第0位置为0
  out();
  cout<<bin.test(0)<<endl;//判断第0位是否为1
  bin.set(0);
  int x=bin.to_ulong();//转为整数1。注意从右向左取值及长度勿超过long型范围
  cout<<x<<endl;
  system("pause");
}

知识共享许可协议
本作品采用知识共享署名-非商业性使用-相同方式共享 3.0 未本地化版本许可协议进行许可。

本文链接:https://hs-blog.axell.top/archives/37/