【c++】#include<bitset>

本文详细介绍了C++中的bitset类,包括如何创建、操作和转换bitset对象,以及其提供的各种成员函数,如设置、重置、翻转位等,并提到了从string对象初始化bitset的注意事项。
摘要由CSDN通过智能技术生成

【C++ 14】#include

#include <iostream>  
#include <bitset> // 包含 bitset 头文件  
  
int main() {  
    std::bitset<8> b(42); // 创建一个包含 8 位的 bitset 对象,初始化为十进制数 42 的二进制表示  
    std::cout << b << std::endl; // 输出 bitset 对象的内容,应该是 "00101010"  
  
    b.set(2); // 将第 2 位设置为 1(从右往左数,从 0 开始)  
    std::cout << b << std::endl; // 输出 "00111010"  
  
    b.reset(4); // 将第 4 位设置为 0  
    std::cout << b << std::endl; // 输出 "00101010"  
  
    b.flip(1); // 翻转第 1 位的值  
    std::cout << b << std::endl; // 输出 "00001010",如果原来是 0 则变为 1,原来是 1 则变为 0  
  
    unsigned int num = b.to_ulong(); // 将 bitset 对象转换为无符号整数  
    std::cout << num << std::endl; // 输出转换后的整数,应该是 10(二进制 "00001010" 对应的十进制数)  
  
    return 0;  
}
bitset<16> bit ( 0xFFFF )              // 0~15位都置1
bitset<32> bit ( 0xFFFF )              // 0~15位置1,16~31位置0

用 string 对象初始化bitset对象

string strval (1100)
bitset<32> bit ( strval )

注意:从string对象读入位集的顺序是从右向左。即反向转化:string对象最右边的字符用来初始化bitset对象的低阶位(即下标为0的位)。

bit 的位模式中第2和3位置为1,其余位置都为0。如果string对象的字符个数小于bitset类型的长度,则高阶位将置为0。

不一定要把整个string对象都作为bitset的初始值,可以只用某个子串作为初始值:

string str (111111111100000000011011)
bitset<32> bit ( str , 5 , 4 )

l bitset的成员函数

any()是否存在位置为1的二进制位
none()不存在置为1的二进制位?
count()置为1的二进制位的个数
size()总的二进制位的个数
[pos]访问在pos处的二进制位
test(pos)pos处的二进制位是否为1
set()所有位都置1
set(pos)pos处的二进制置1
reset()所有二进制置0
reset(pos)pos处的二进制位置0
flip()所有位置反
flip(pos)pos位置反
to_ulong()返回一个 unsigned long 值
  • 5
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值