std::bitset用法
时间: 2023-10-16 13:10:59 浏览: 42
std::bitset是一个标准库模板类,用于表示固定大小的二进制位集合。它可以存储和操作最多包含N个二进制位的位集合,其中N为编译时常量。以下是一些std::bitset的用法。
1.创建std::bitset对象
可以通过以下方式创建std::bitset对象:
```
std::bitset<8> bits1; // 创建8位二进制位集合,默认所有位都为0
std::bitset<8> bits2(0xFF); // 创建8位二进制位集合,所有位都设置为1
std::bitset<8> bits3("10101010"); // 创建8位二进制位集合,从字符串中初始化
```
2.访问和设置二进制位
可以使用下标运算符[]来访问和设置std::bitset对象的二进制位:
```
std::bitset<8> bits("10101010");
bool b = bits[0]; // 获取第0位的值
bits[1] = 1; // 设置第1位为1
```
3.位操作
std::bitset提供了多种位操作函数,例如and,or,xor,not等。这些函数可以用于将多个二进制位集合进行逐位操作:
```
std::bitset<8> bits1("10101010");
std::bitset<8> bits2("01010101");
std::bitset<8> result = bits1 & bits2; // 逐位与操作
result = bits1 | bits2; // 逐位或操作
result = bits1 ^ bits2; // 逐位异或操作
result = ~bits1; // 取反操作
```
4.位集合转换
std::bitset可以转换为其他数据类型,例如unsigned long long,unsigned long,unsigned int等:
```
std::bitset<64> bits("1010101010101010101010101010101010101010101010101010101010101010");
unsigned long long ull = bits.to_ullong(); // 转换为unsigned long long
unsigned long ul = bits.to_ulong(); // 转换为unsigned long
unsigned int ui = bits.to_ulong(); // 转换为unsigned int
```