一、bitset用法有什么用
bitset是STL中的一种容器,用来存储二进制数,可以快速的进行位运算。比如在一些场景中,需要对多个状态进行保存和判断,或者需要进行序列的去重。这时bitset就可以派上用场了。
使用bitset可以将二进制数表示为一个长字符串,使得我们可以方便的对位进行操作,比如获取某一位的值、设置某一位的值、取反等。而且bitset中的一些高级函数也可以简化我们对位运算的操作。
二、bitset用法
1. bit用法
bitset可以用来表示二进制数,并且可以对每一位进行读取和设置,具体可以参考下面的代码:
bitset<8> bit(25); //将十进制数25表示为二进制数 cout << bit << endl; //输出二进制数 cout << bit[0] << endl; //获取第1位二进制数的值 bit[1] = 1; //将第2位二进制数设置为1 cout << bit << endl; //输出修改后的二进制数
2. bitset函数
bitset还提供了一些常用的函数,比如count(), set(), reset(), flip()等,以方便我们进行位运算。这些函数的具体用法如下:
bitset<8> bit(25); cout << bit.count() << endl; //输出二进制数中1的位数 bit.set(2); //将第3位二进制数设置为1 cout << bit << endl; bit.reset(2); //将第3位二进制数设置为0 cout << bit << endl; bit.flip(); //将二进制数全部取反 cout << bit << endl;
3. bitset头文件
bitset是C++ STL提供的一个容器,需要包含
4. bite用法视频
对于关于bitset的学习视频,可以参考下面这个视频:https://www.bilibili.com/video/BV1pb411U7WE
5. bite用法
可以使用bitset实现一些和二进制相关的算法,比如检查一个数是否为2的次幂,方法如下:
bool check_pow_of_2(int n) { if(n <= 0) return false; return ((n & (n - 1)) == 0); } int main() { int n = 8; if(check_pow_of_2(n)) cout << n << " is power of 2" << endl; else cout << n << " is not power of 2" << endl; }
6. bitter用法
可以使用bitset实现序列去重,方法如下:
#include#include using namespace std; const int N = 210; int n, a[N]; int main() { cin >> n; for(int i = 0; i < n; i ++) cin >> a[i]; bitset<10010> bs; for(int i = 0; i < n; i ++) { if(!bs.test(a[i])) { //如果bs中没有记录a[i] cout << a[i] << " "; //输出a[i] bs.set(a[i]); //将a[i]对应的位置设为1 } } return 0; }
7. abitof用法
可以使用bitset实现一些和位运算相关的算法,比如求一个数的二进制表示中1的个数,方法如下:
int count_bits(int n) { bitset<32> b(n); return b.count(); } int main() { int n = 25; cout << "The number of bits set for " << n << " is:" << count_bits(n) << endl; return 0; }