C 中的bitset是标准库提供的固定大小二进制位集合容器适合高效处理位级操作常用于状态标记、位掩码、压缩存储等场景。它在编译时确定大小性能优于动态位容器如vectorbool且支持直观的位运算和字符串转换。你可以在声明时指定位数例如bitset8表示一个 8 位的二进制序列。默认初始化为全 0也可通过整数或二进制字符串初始化cppbitset8 b1; // 00000000bitset8 b2(5); // 00000101十进制5转二进制bitset8 b3(string(1010)); // 00001010自动右对齐常用操作包括‌设置位‌set()全设为1set(n)设置第 n 位从右往左索引从0开始‌清除位‌reset()全清为0reset(n)清除第 n 位‌翻转位‌flip()全部翻转flip(n)翻转第 n 位‌查询位‌test(n)检查第 n 位是否为1返回 bool‌获取值‌to_ulong()或to_ullong()转为无符号整数注意溢出‌转字符串‌to_string()返回 01 字符串表示‌位运算‌支持、|、^、~、、等可直接对两个 bitset 进行运算数组bl[i]x指的将从右往左数第 i 位设成 x例如判断一个数是否为2的幂次cppbitset32 b(n); if (b.count() 1) { // 只有一个1位说明是2的幂 cout 是2的幂\n; }count()返回1的个数size()返回总位数any()和none()分别判断是否有/无任何位为1。bitset不支持动态扩容但因其零开销抽象和编译期优化在嵌入式、网络协议、加密算法中广泛使用。若你需要处理超过64位的位集合可考虑使用std::vectorbool或第三方库如 Boost.dynamic_bitset。注意to_ulong()仅适用于位数 ≤ULONG_MAX的情况若位数超过如bitset128应改用to_ullong()或分段处理。