C++ bitset详细解析

C++中提供了bitset位类库,用于简化对位集的操作。

bitset定义时,要明确多少位:

直接定义方式

bitset<32> bitver;//32位,位值都是0

unsigned long方式定义

bitset<64> bitver(0xffff);//0-15位为1,其他位为0

字符串方式定义

bitset<16> bitver("1100");//0-3为0011,其他位为0


bitset类提供了一系列的操作集

bool bitset.all(); //所有值都是1
	bool bitset.any(); //任意值为1
	bool bitset.count();//1的个数
	bool bitset.flip(); //二进制位反置
	bool bitset.flip(size_t pos);//pos位置反置
	bool bitset.none();//所有值都是0
	bool bitset.set();//所有值都置1
	bool bitset.set(size_t pos);//pos位置置1
	bool bitset.reset();//所有值都置0
	bool bitset.reset(size_t pos);//pos位置置0
    bool bitset.test(size_t pos);//pos位置是否为1
编程实例

#include <iostream>

#include <bitset>
using namespace std;
int main()
{
	string str;
	cout<<"请输入二进制字符串"<<endl;
	cin>>str;
	bitset<32> bitver(str);
	cout<<"二进制位的个数:"<<bitver.size()<<endl;
	cout<<"二进制位中1的个数:"<<bitver.count()<<endl;

	//访问二进制位中的对象
	cout<<"按位访问二进制位对象:";
	for (size_t i = 0 ;i != bitver.size();i++)
	{
		cout<<bitver[i];
		//bitver[i] = * 设置二进制位
	}
	cout<<endl;	
	cout<<"二进制位取反:"<<bitver.flip()<<endl;
	//二进制位设置
	//全部置1
	cout<<"二进制位全部置1:"<<  bitver.set()<<endl;
	//全部置0
	cout<<"二进制全部置0:";
	for (size_t i = 0;i!=bitver.size();i++)
	{
		bitver.reset(i);
	}//bitver.reset()
	cout<<endl;
	//二进制位输出
	//整体输出
	cout<<"整体输出"<<bitver<<endl;
	return 0;
}


你可能感兴趣的:(C++,代码,bitset)