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