C++ <bitset> 库简介

<bitset> 是 C++ 标准库的一部分,提供了一种用来处理固定大小序列的位的数据结构,这种数据结构称为 bitset

1. 创建 bitset

创建 bitset 的常见方式是通过构造函数,传入一个整数或字符串。例如:

std::bitset<8> b1(42); // 从整数创建,结果是 00101010
std::bitset<8> b2("1101"); // 从字符串创建,结果是 00001101

注意,如果从字符串创建,bitset 会从字符串的右边开始读取,直到读取完整个字符串或已经填满所有位。

2. 访问和修改位

你可以使用 [] 操作符来访问或修改 bitset 的位。例如:

std::bitset<8> b("1101");
std::cout << b[0]; // 输出 1
b[1] = 0; // 将第二位设置为 0

3. 位操作

bitset 支持所有常见的位操作,包括位与(&)、位或(|)、位异或(^)和位非(~)。例如:

std::bitset<4> b1("1100");
std::bitset<4> b2("1010");
std::cout << (b1 & b2); // 输出 1000

4. 其他操作

bitset 还提供了一些其他有用的操作,例如 count()(返回置位(值为1)的位数)、size()(返回位的总数)、flip()(翻转所有位)、set()(将所有位设置为1)、reset()(将所有位设置为0)等。

std::bitset<8> b("11010010");
std::cout << b.count(); // 输出 4
std::cout << b.size(); // 输出 8
b.flip(); // 翻转所有位
b.set(); // 将所有位设置为 1
b.reset(); // 将所有位设置为 0

5. 转换

你可以使用 to_ulong() 和 to_ullong() 方法将 bitset 转换为无符号长整数或无符号长长整数。使用 to_string() 方法可以将 bitset 转换为字符串。

std::bitset<8> b("11010010");
std::cout << b.to_ulong(); // 输出 210
std::cout << b.to_string(); // 输出 11010010

注意,如果 bitset 的值太大,不能用无符号长整数或无符号长长整数表示,那么 to_ulong() 和 to_ullong() 会抛出 std::overflow_error 异常。

bitset 是一个非常方便的工具,可以让你更容易地处理位操作

  • 21
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值