C++学习,标准库 <bitset>

 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;  
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值