The Code

方法:

bi.size() //返回大小,即位数
bi.count() //返回1的个数
bi.any() //返回是否有1
bi.none() //返回是否没有1
bi.set() //全部变成1
bi.set(p)//将第p+1位变成1
bi.set(p,x)//将p+1位变成x
bi.reset() //全部变成0
bi.reset(p) //将p+1位变成0
bi.flip() //全部取反
bi.flip(p) //将p+1位取反
bi.test(p) //返回i的索引,如果不存在则返回0
bi.to_ulong() //返回它转换为unsigned long的结果,如果超出范围则报错
bi.to_ullong() //返回它转换为unsigned long long的结果
bi.to_string() //返回它转换位string的结果
(此资料来自CSDN,若有不对请告诉我)

样例:

//顶级垃圾程序
//A very bad program
#include <bits/stdc++.h>
using namespace std;

bitset<8> n, s;
bitset<8> b1("11111111");
int m;
int main(){
	freopen("bitset.in", "r", stdin);
	freopen("bitset.out", "w", stdout);
	cin >> m;
	n = m;
	cout << n << endl;
	cout << "count:" << n.count() << endl; //返回n中1出现的次数 
	cout << "size:" << n.size() << endl; //返回n的长度 
	cout << "test1:" << (n.test(0) ? "true" : "false") << endl; //返回下标为0的数是否为1 
	cout << "test2:" << (n.test(2) ? "true" : "false") << endl; //下标是从右往左计算(与数组相反) 
	cout << "any:" << (n.any() ? "true" : "false") << endl; //判断n数中是否有1(有返回true,反之为false 
	s = 0;
	cout << "none:" << (s.none() ? "true" : "false") << endl; //判断s数中是否没有1(没有为true,反之为false 
	cout << "all:" << (b1.all() ? "true" : "false") << endl; //判断b1数中是否全是1(是返回true,反之为false 
	return 0;
}

bitset.in

12

bitset.out

00001100
count:2
size:8
test1:false
test2:true
any:true
none:true
all:true