C++ 知识量:19 - 82 - 316
bitset是C++标准库中的一个类,用于处理固定大小的位序列。它允许以一种高效且方便的方式操作位的值。bitset的大小在编译时确定,不能在运行时改变。
以下是bitset的基本定义和初始化方式:
#include <bitset> int main() { // 定义一个8位的bitset,所有位初始化为0 std::bitset<8> b; // 定义一个16位的bitset,所有位初始化为1 std::bitset<16> b1(1); // 使用位操作设定某些位的值 b.set(0, true); // 设置第0位为true b.set(2, true); // 设置第2位为true b.clear(1); // 清除第1位 b.flip(); // 反转所有位 // 打印bitset的值 std::cout << b << std::endl; std::cout << b1 << std::endl; return 0; }
以上代码定义了两个bitset对象:b和b1。其中,b是一个8位的bitset,所有位初始化为0;b1是一个16位的bitset,所有位初始化为1。然后,对b进行了位操作,设置了某些位的值,并清除了其他位。最后,打印了这两个bitset的值。
以下是C++ bitset的一些基本操作:
1. 创建和初始化
创建和初始化bitset的最简单方式如下:
std::bitset<N> bs; // 创建一个N位的bitset,所有位初始化为0 std::bitset<N> bs(M); // 创建一个N位的bitset,所有位初始化为M(一个整数)
2. 访问
可以使用下标操作符([])访问bitset中的特定位。下标从右到左编号:
bs[index]; // 读取或写入第index位
3. 设置和清除
可以使用set和clear函数来设置或清除bitset中的特定位:
bs.set(); // 将所有位设为true bs.set(index); // 将第index位设为true bs.set(index, value); // 将第index位设为value(true或false) bs.clear(); // 将所有位设为false bs.clear(index); // 将第index位设为false
4. 反转
使用flip函数可以反转bitset中特定位的值:
bs.flip(); // 反转所有位 bs.flip(index); // 反转第index位
5. 打印
可以使用to_string函数将bitset转换为字符串,方便打印:
std::cout << bs.to_string() << std::endl; // 打印bitset的值
6. 位操作
bitset支持常见的位操作,如左移(<<)、右移(>>)、按位与(&)、按位或(|)、按位异或(^)等:
std::bitset<8> a(0b10101010); // 创建8位的bitset,初始值为10101010 std::bitset<8> b(0b01010101); // 创建8位的bitset,初始值为01010101 std::cout << (a << 2) << std::endl; // 左移2位,打印结果为1010101000 std::cout << (a | b) << std::endl; // 按位或,打印结果为11111111(即int类型的255)
Copyright © 2017-Now pnotes.cn. All Rights Reserved.
编程学习笔记 保留所有权利
MARK:3.0.0.20240214.P35
From 2017.2.6