C++ 编程中,<bitset> 是标准库的一部分,它提供了一种方式来操作固定大小的位集合。位集合是一个由位(bit)组成的数组,每个位可以是0或1。bitset 类型非常适合于需要表示二进制数据或进行位操作的场景。<bitset>是一个模板类,其模板参数定义了位集合的大小。例如,bitset<32> 表示一个包含32位的位集合。<bitset> 类模板允许你进行位操作,如设置、清除、翻转、测试和计数等,而无需担心底层的位表示。
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() {
// 声明一个大小为8的bitset,所有位初始化为0
std::bitset<8> myBitset;
// 使用字符串初始化bitset(字符串中的每个字符必须是'0'或'1')
std::bitset<8> myBitset2("10101010");
// 使用整数初始化bitset(只使用整数的最低有效位)
std::bitset<8> myBitset3(170); // 二进制表示为10101010
return 0;
}
访问和修改位:
#include <iostream>
#include <bitset>
int main() {
std::bitset<8> myBitset("10101010");
// 访问位
std::cout << "Bit at index 0: " << myBitset[0] << std::endl;
std::cout << "Bit at index 7: " << myBitset[7] << std::endl;
// 修改位
myBitset[3] = 1; // 将索引3处的位设置为1
myBitset[5] = 0; // 将索引5处的位设置为0
std::cout << "Modified bitset: " << myBitset << std::endl;
return 0;
}
位操作:
#include <iostream>
#include <bitset>
int main() {
std::bitset<8> myBitset("10101010");
// 设置位
myBitset.set(1); // 将索引1处的位设置为1
// 清除位
myBitset.reset(4); // 将索引4处的位清除为0
// 翻转位
myBitset.flip(2); // 翻转索引2处的位
// 测试位
bool bitTest = myBitset.test(6); // 测试索引6处的位是否为1
std::cout << "Bit at index 6 is: " << (bitTest ? "1" : "0") << std::endl;
// 计数设置为1的位数
std::size_t countOnes = myBitset.count();
std::cout << "Number of 1 bits: " << countOnes << std::endl;
// 转换为字符串或整数
std::string bitsetString = myBitset.to_string();
std::cout << "Bitset as string: " << bitsetString << std::endl;
std::size_t toUlong = myBitset.to_ulong();
std::cout << "Bitset as unsigned long: " << toUlong << std::endl;
return 0;
}

1105

被折叠的 条评论
为什么被折叠?



