bitset C++

以下内容摘自网页(原著未知)。

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;
}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值