C++ 标准库 <bitset>
在 C++ 编程中,<bitset>
是标准库的一部分,它提供了一种方式来操作固定大小的位集合。
位集合是一个由位(bit)组成的数组,每个位可以是0或1。bitset
类型非常适合于需要表示二进制数据或进行位操作的场景。
bitset
是一个模板类,其模板参数定义了位集合的大小。例如,bitset<32>
表示一个包含32位的位集合。
语法
以下是使用 bitset
的基本语法:
#include <bitset> // 声明一个大小为N的bitset std::bitset<N> b; // 初始化bitset b = std::bitset<N>(value); // 访问位集合中的单个位 bool bit = b[i];
实例
基本使用:
实例
#include <iostream>
#include <bitset>
int main() {
std::bitset<8> b("11001010"); // 从字符串初始化
std::cout << "Initial bitset: " << b << std::endl;
// 访问特定位置的位
std::cout << "Bit at position 3: " << b[3] << std::endl;
// 修改位
b[3] = 1;
std::cout << "Modified bitset: " << b << std::endl;
// 翻转位
b.flip();
std::cout << "Flipped bitset: " << b << std::endl;
return 0;
}
#include <bitset>
int main() {
std::bitset<8> b("11001010"); // 从字符串初始化
std::cout << "Initial bitset: " << b << std::endl;
// 访问特定位置的位
std::cout << "Bit at position 3: " << b[3] << std::endl;
// 修改位
b[3] = 1;
std::cout << "Modified bitset: " << b << std::endl;
// 翻转位
b.flip();
std::cout << "Flipped bitset: " << b << std::endl;
return 0;
}
输出结果:
Initial bitset: 11001010 Bit at position 3: 0 Modified bitset: 11001011 Flipped bitset: 00110110
位操作:
实例
#include <iostream>
#include <bitset>
int main() {
std::bitset<8> b1("10101010");
std::bitset<8> b2("11110000");
// 位与操作
std::bitset<8> b_and = b1 & b2;
std::cout << "Bitwise AND: " << b_and << std::endl;
// 位或操作
std::bitset<8> b_or = b1 | b2;
std::cout << "Bitwise OR: " << b_or << std::endl;
// 位异或操作
std::bitset<8> b_xor = b1 ^ b2;
std::cout << "Bitwise XOR: " << b_xor << std::endl;
// 位非操作
std::bitset<8> b_not = ~b1;
std::cout << "Bitwise NOT: " << b_not << std::endl;
return 0;
}
#include <bitset>
int main() {
std::bitset<8> b1("10101010");
std::bitset<8> b2("11110000");
// 位与操作
std::bitset<8> b_and = b1 & b2;
std::cout << "Bitwise AND: " << b_and << std::endl;
// 位或操作
std::bitset<8> b_or = b1 | b2;
std::cout << "Bitwise OR: " << b_or << std::endl;
// 位异或操作
std::bitset<8> b_xor = b1 ^ b2;
std::cout << "Bitwise XOR: " << b_xor << std::endl;
// 位非操作
std::bitset<8> b_not = ~b1;
std::cout << "Bitwise NOT: " << b_not << std::endl;
return 0;
}
输出结果:
Bitwise AND: 10100000 Bitwise OR: 11111010 Bitwise XOR: 01111010 Bitwise NOT: 01010101
循环遍历位集合:
实例
#include <iostream>
#include <bitset>
int main() {
std::bitset<8> b("10101010");
// 循环遍历bitset中的位
for (size_t i = 0; i < b.size(); ++i) {
std::cout << b[i];
}
std::cout << std::endl;
return 0;
}
#include <bitset>
int main() {
std::bitset<8> b("10101010");
// 循环遍历bitset中的位
for (size_t i = 0; i < b.size(); ++i) {
std::cout << b[i];
}
std::cout << std::endl;
return 0;
}
输出结果:
10101010
bitset
是C++标准库中一个非常有用的工具,它允许程序员以一种直观和高效的方式处理位级数据。通过上述实例,我们可以看到如何声明、初始化、访问、修改以及进行位操作。这些功能在处理二进制数据或需要进行位级控制的场合非常有用。