以下内容摘自网页(原著未知)。
bitset:
1).bitset对象初始化及换行输出
#include "stdafx.h"
#include <iostream>
#include <string>
#include <vector>
#include <bitset>
using namespace std;
int main()
{
bitset<32> bitvec; //32 bits,all zero
int cnt=0;
for(int ix=0;ix!=bitvec.size();++ix)
{
cout<<bitvec[ix]<<" ";
++cnt;
if(cnt%8==0)
cout<<endl;
}
//string initialied the object of bitset
string strval("1100");
bitset<32> bitvec1(strval);
for(int iy=0;iy!=bitvec1.size();++iy)
{
cout<<bitvec1[iy]<<" ";
}
return 0;
}
2).bitset的访问与操作
#include "stdafx.h"
#include <iostream>
#include <string>
#include <vector>
#include <bitset>
using namespace std;
int main()
{
bitset<32> bitvec; //32 bits,all zero
bool is_set=bitvec.any(); //false,all bits are zero
bool is_not_set=bitvec.none(); //true, all bits are 1
size_t bits_set=bitvec.count(); //returns number of bits that no
size_t sz=bitvec.size(); //return 32
cout<<bitvec<<endl
<<is_set<<endl
<<is_not_set<<endl
<<bits_set<<endl
<<sz<<endl;
//assign 1 to even number bits
for(int ix=0;ix!=bitvec.size();ix+=2)
{
bitvec[ix]=1;
}
for(int iy=0;iy!=bitvec.size();++iy)
cout<<bitvec[iy]<<" ";
//equivalent loop using set operation
for(int index=0;index!=bitvec.size();index+=2)
bitvec.set(index);
for(int iz=0;iz!=bitvec.size();++iz)
cout<<bitvec[iz]<<" ";
//bitvec[index] is on
bitvec.reset(); //set all the bits to 0
for(int ix1=0;ix1!=bitvec.size();++ix1)
cout<<bitvec[ix1]<<" ";
bitvec.set(); //set all the bits to 1
for(int iy1=0;iy1!=bitvec.size();++iy1)
cout<<bitvec[iy1]<<" ";
cout<<endl;
bitvec.flip(0); //reverses value of firrst bit,bitvec[0].flip()
cout<<bitvec[0]<<endl;
return 0;
}
3).将序列1,3,5,8,13,21,初始化一个将该序列数字所对应的位置置为1的bitset<32>对象,然后写一段程序,给定一空的bitset对象把相应的
数位置为1
初始化:bitset<32> bitvec(0x20212e)
#include "stdafx.h"
#include <iostream>
#include <bitset>
#include <string>
#include <vector>
using namespace std;
int main()
{
bitset<32> bitvec;
int x=0,y=1,z;
z=x+y;
while(z<=21)
{
bitvec.set(z);
x=y;
y=z;
z=x+y;
}
for(int ix=0;ix!=bitvec.size();++ix)
{
cout<<bitvec[ix]<<" ";
}
cout<<endl;
return 0;
}