目录
一、问题
std::bitset 是 C++ 标准模板库(STL)中的一个模板类,用于表示和操作固定大小的二进制序列(即一组位)。std::bitset 提供了一些成员函数和运算符,使得对二进制数据的操作变得非常方便。以下是对 std::bitset 的详细使用
二、定义和初始化
1、std::bitset 的定义需要指定一个大小(即位数)
#include <bitset>
#include <iostream>
int main()
{
std::bitset<8> bset; // 定义一个8位的bitset
return 0;
}
2、默认构造函数
std::bitset<8> bset; // bset = 00000000
3、使用整数初始化
// bset1 = 00001100 (12的二进制表示)
std::bitset<8> bset1(12);
4、使用字符串初始化
字符串中的字符必须是 '0' 或 '1'。
// bset2 = 00001100
std::bitset<8> bset2("1100");
三、访问元素
访问单个位:使用 operator[] 访问某个位,返回值是一个 std::bitset::reference 对象,该对象可以自动转换为 bool 值。
std::bitset<8> bset(12); // bset = 00001100
bool bit = bset[2]; // bit = 1 (从右往左数,第3位)
四、修改元素
通过 operator[] 返回的 std::bitset::reference 对象,可以直接修改位。
bset[2] = 0; // bset = 00001000
五、成员函数
1、count()函数
返回二进制表示中值为1的位的数量
std::bitset<8> bset(12); // bset = 00001100
std::cout << bset.count() << std::endl; // 输出 2
2、size()函数
返回 bitset 的大小(位数)
std::cout << bset.size() << std::endl; // 输出 8
3、test()函数
测试某个位是否为1
bool bit_status = bset.test(2); // 测试第3位是否为1
std::cout << bit_status << std::endl; // 输出 0
4、any()函数
检查是否有任何位为1
std::bitset<8> bset3(0); // 所有位都是0
std::cout << bset3.any() << std::endl; // 输出 0 (false)
5、none()函数
检查是否所有位都为0
std::cout << bset3.none() << std::endl; // 输出 1 (true)
6、all()函数
检查是否所有位都为1
std::bitset<8> bset4(255); // bset4 = 11111111
std::cout << bset4.all() << std::endl; // 输出 1 (true)
7、to_string()函数
返回 bitset 的二进制表示,以字符串形式
std::string str = bset.to_string(); // str = "00001000"
std::cout << str << std::endl;
8、to_ulong() 和 to_ullong()
返回 bitset 的无符号长整型或无符号长长整型表示(仅当 bitset 的大小适合时才有效)
unsigned long val = bset.to_ulong(); // val = 8
std::cout << val << std::endl;
六、运算符
std::bitset 支持一些常见的位运算符,如 &(按位与)、|(按位或)、^(按位异或)、~(按位取反)、<<(左移)、>>(右移)、==(等于)、!=(不等于)。
std::bitset<8> bset1(12); // bset1 = 00001100
std::bitset<8> bset2(5); // bset2 = 00000101
std::bitset<8> bset3 = bset1 & bset2; // bset3 = 00000100
std::bitset<8> bset4 = bset1 | bset2; // bset4 = 00001101
std::bitset<8> bset5 = bset1 ^ bset2; // bset5 = 00001001
std::bitset<8> bset6 = ~bset1; // bset6 = 11110011
std::bitset<8> bset7 = bset1 << 2; // bset7 = 00110000
std::bitset<8> bset8 = bset1 >> 2; // bset8 = 00000011
七、总结
std::bitset 提供了一种非常方便的方式来表示和操作固定大小的二进制数据。它提供了丰富的成员函数和运算符,使得对二进制数据的操作变得直观和高效。
标签:std,函数,STL,C++,bitset,bset1,bset,cout From: https://blog.csdn.net/zhu_ing/article/details/144131629