C++_STL_bitset的使用

/*
STL 中bitset的使用。

member functions: 
· bitset::any : 判断bitset里面是否有1; 有,返回true,否则返回false;
· bitset::count :计算一个bitset里面有几个1, 通过bitset:size()-bitset:count()可以得到有几个0;
· bitset::flip : 取反函数,可以带参数,bitset:flip( pos )表示将第pos位取反,pos从0开始,且表示从bitset右边开始数,可以不带参数,直接bitset:flip()表示将所有位取反;
· bitset::none : 判断bitset是否全部为0,若全部为0,返回true,否则,返回false;此函数和bitset::all相反;
· bitset::operator[] : 表示[]的使用,即bitset也可以看成一个数组,可以通过bitset[n]来取得第n位的值,或者对其进行赋值; 
· bitset::reset : 置0函数,可以带参数,bitset:reset( pos )表示将第pos位置为0,pos从右边开始,从0开始,不带参数,表示将所有位置0;
· bitset::set : 置1函数,可以带参数,bitset:set( pos, val )表示将第pos位置为val,val可以为1或者0,不带参数,则默认将所有位置为1;
· bitset::size :表示取得bitset的长度;
· bitset::test : 要带参数,bitset:test( pos )表示测试第pos位是否为1,若为1,返回true,否则返回false;此函数中用到boolalpha, 使用cout<<boolalpha;之后,后面的输出就会用true和false代替默认的1和0;
· bitset::to_string : 将bitset转换为string,带参数,有三个参数,具体见函数;
· bitset::to_ulong : 将bitset转换为unsigned long;
· bitset::to_ullong : 将bitset转换为unsigned long long;(此函数实现省略)
· bitset::at : 带参数,bitset:at( pos )表示取得第pos位的值,pos从0开始,从右边开始;
· bitset::all : 不带参数,判断bitset是否全部为1,若全部为1,返回true,否则返回false;此函数和bitset::none相反;

*/
#include <iostream>
#include <bitset>
using namespace std;

void my_bitset_any();
void my_bitset_count();
void my_bitset_flip();
void my_bitset_none();
void my_bitset_operator();
void my_bitset_reset();
void my_bitset_set();
void my_bitset_size();
void my_bitset_test();
void my_bitset_to_string();
void my_bitset_to_ulong();
void my_bitset_at();
void my_bitset_all();

int main()
{
	//my_bitset_any();
	//my_bitset_count();
	//my_bitset_flip();
	//my_bitset_none();
	//my_bitset_operator();
	//my_bitset_reset();
	//my_bitset_set();
	//my_bitset_size();
	//my_bitset_test();
	//my_bitset_to_string();
	//my_bitset_to_ulong();
	//my_bitset_at();
	//my_bitset_all();

	system("pause");
	return 0;
}

// bitset::any
void my_bitset_any()
{
	bitset<16> mybits;

	cout << "enter a binary number: ";
	cin >> mybits;

	if (mybits.any())
		cout << "mybits has " << (int)mybits.count() << " bits set.\n";
	else
		cout << "mybits has no bits set.\n";
}

// bitset::count
void my_bitset_count()
{
	bitset<8> myset (string("10110011"));

	cout << "myset has " << int(myset.count()) << " ones ";
	cout << "and " << int(myset.size()-myset.count()) << " zeros.\n";
}

//bitset::flip
void my_bitset_flip()
{
	bitset<4> mybits (string("0001"));

	cout << mybits.flip(2) << endl;     // 0101
	cout << mybits.flip() << endl;      // 1010
}

// bitset::none
void my_bitset_none()
{
	bitset<16> mybits;

	cout << "enter a binary number: ";
	cin >> mybits;

	if (mybits.none())
	cout << "mybits has no bits set.\n";
	else
	cout << "mybits has " << (int)mybits.count() << " bits set.\n";
}

// bitset::operator[]
void my_bitset_operator()
{
	bitset<4> mybits;

	mybits[1]=1;             // 0010
	mybits[2]=mybits[1];     // 0110

	cout << "mybits: " << mybits[2] << endl; 
}

// bitset::reset
 void my_bitset_reset()
 {
	bitset<4> mybits (string("1011"));

	cout << mybits.reset(1) << endl;    // 1001
	cout << mybits.reset() << endl;    // 0000
 }

// bitset::set
void my_bitset_set()
{
	bitset<4> mybits;

	cout << mybits.set() << endl;       // 1111
	cout << mybits.set(2,0) << endl;    // 1011
	cout << mybits.set(2,1) << endl;    // 1111
	cout << mybits.set(2) << endl;      // 1111
}

// bitset::size
void my_bitset_size()
{
	bitset<8> first;
	bitset<4> second;

	cout << "first.size() is " << (int) first.size() << endl;
	cout << "second.size() is " << (int) second.size() << endl;

}

// bitset::test
void my_bitset_test()
{
	bitset<5> mybits (string("01011"));

	cout << "mybits contains:\n";
	cout << boolalpha;
	for (size_t i=0; i<mybits.size(); ++i)
		cout << mybits.test(i) << endl;

}

// bitset::to_string
void my_bitset_to_string()
{
	string mystring;
	bitset<29> mybits;     // mybits: 0000

	mybits.set();         // mybits: 1111

	mystring=mybits.to_string<char,char_traits<char>,allocator<char> >();

	cout << "mystring: " << mystring << endl;
}

// bitset::to_ulong
void my_bitset_to_ulong()
{
	bitset<4> mybits;     // mybits: 0000

	mybits.set();         // mybits: 1111

	cout << mybits << " as an integer is: " << mybits.to_ulong() << endl;
}

// bitset::at
void my_bitset_at()
{
	bitset<5> mybits (string("01011"));     // mybits: 0000

	cout<<mybits.at(1);
}

// bitset::all
void my_bitset_all()
{
	bitset<5> mybits (string("11111"));     

	cout<<mybits.all();
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值