C++ bitset 基本用法

bitset 是 C++ 标准库中的一个类,用于处理固定大小的二进制位序列。

1. 引入头文件使用 #include <bitset>

2. 初始化

  • 默认初始化:所有位为 0
    std::bitset<8> b1; // 00000000
    
  • 从整数初始化
    std::bitset<8> b2(42); // 00101010
    
  • 从字符串初始化
    std::bitset<8> b3("101010"); // 00101010
    

3. 常用操作

  • 访问位
    b1[0] = 1; // 设置第0位为1
    bool bit = b1[0]; // 获取第0位的值
    
  • 设置/重置位
    b1.set(); // 所有位设置为1
    b1.reset(); // 所有位重置为0
    b1.flip(); // 所有位取反
    b1.set(pos); // 设置pos位为1
    b1.reset(pos); // 设置pos位为0
    b1.flip(pos); // 反转pos位
    
  • 统计
    int count = b1.count(); // 统计1的个数
    int size = b1.size(); // 获取位总数
    bool any = b1.any();   // 是否存在1
    bool none = b1.none();  // 是否全为0
    

4. 转换

  • 转换为整数
    unsigned long val = b1.to_ulong();
    
  • 转换为字符串
    std::string s = b1.to_string();
    

5. 位运算

支持位运算:

std::bitset<8> b4 = b1 & b2; // 与
std::bitset<8> b5 = b1 | b2; // 或
std::bitset<8> b6 = b1 ^ b2; // 异或
std::bitset<8> b7 = ~b1;      // 取反
b1 <<= 2; // 左移
b1 >>= 2; // 右移

6. 注意事项

  • bitset 的大小在编译时确定。
  • 访问越界会导致未定义行为。
  • to_ulong()bitset 表示的数值超出 unsigned long 的范围时会抛出异常。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值