bitsets

foo.size() 返回大小(位数)
foo.count() 返回1的个数
foo.any() 返回是否有1
foo.none() 返回是否没有1
foo.set() 全都变成1
foo.set(p) 将第p + 1位变成1
foo.set(p, x) 将第p + 1位变成x
foo.reset() 全都变成0
foo.reset(p) 将第p + 1位变成0
foo.flip() 全都取反
foo.flip(p) 将第p + 1位取反
foo.to_ulong() 返回它转换为unsigned long的结果,如果超出范围则报错
foo.to_ullong() 返回它转换为unsigned long long的结果,如果超出范围则报错
foo.to_string() 返回它转换为string的结果

#include <iostream>
#include <bitset>
using namespace std;
int main(){
	// 例如,以下代码创建两个bitsets,然后显示它们:bitsets强在可以按位进行异或等操作
	// 创建一个8位长的bitset
	bitset<8> bs; //创建一个x位的bitsets
	// 显示这个bitset
	for (int i = (int)bs.size(); i > 0;) {
		i--;
		cout << bs[i] << " ";
	}
	cout << endl;// 创建另一个bitset
	bitset<8> bs2((long)131);// 显示
	for (int i = (int)bs2.size(); i > 0; ) {
		i--;
		cout << bs2[i] << " ";
	}
	cout << endl;
	cout << endl;// 创建一个bitset
	bitset<8> bs3((long)135);
	cout << "bs3 is " << bs3 << endl;// 向左移动4位
	bs3 <<= 4;
	cout << "now bs3 is " << bs3 << endl;//bitset中被设置成1的位的个数。
	cout << bs3.count()<<endl;//反置bitset中所有的位,即将1设为0,0设为1。如果指定pos,那么只有pos上的位被反置。
	bs3.flip(1);
	cout << "now bs3 is " << bs3 << endl;//重置bitset(全部设为0),如果指定pos,那么只有pos上的位被重置。
	bs3.reset(1);
	cout << "now bs3 is " << bs3 << endl;//函数设置bitset上所有的位,然后返回bitset。如果指定pos,那么只有pos上的位被设置。
	bs3.set(1,1);
	cout << "now bs3 is " << bs3 << endl;//返回bitset能容纳的位。
	cout << bs3.size() << endl;//函数返回在pos上的位的值
	cout << bs3.test(1) << endl;//()函数返回bitset的字符串形式
	cout << bs3.to_string() << endl;//返回bitset的无符号长整数形式
	//cout << bs3.to_ullong() << endl;
	printf("hello...\n");
	return 0;
}

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值