【24.2.3笔记】C++ Primer 自学Day 20

本文详细介绍了C++中bitset类的使用方法,包括构造函数(默认、十六进制、八进制字符串),位操作(test,any,none,count,size,flip,set,reset),以及如何通过字符串初始化和转换为其他数据类型。同时提到了位运算符的优先级。
摘要由CSDN通过智能技术生成

四、表达式

12、bitset 操作

操作功能用法
test(pos)pos位是否为1?a.test(4)
any()任意位是否为1?a.any()
none()是否没有位为1?a.none()
count()值是1的位的个数a.count()
size()位元素的个数a.size()
[pos]访问pos位a[4]
flip()翻转所有的位a.flip()
flip(pos)翻转pos位a.flip(4)
set()将所有位置设置为1a.set()
set(pos)将pos位置设置为1a.set(4)
reset()将所有的位置设置为0a.reset()
reset(pos)将pos位置设置为0a.reset(4)

        要使用bitset类,必须先声明头文件:

#include <bitset>

        有三种简单方法来构造bitset对象:

bitset<32> bitvec; // 默认构造
bitset<32> bitvec2(0xffff);//低16位设置为1,这边使用了十六进制数表示
bitset<32> bitvec3(012);// 这边用八进制数表示,012在二进制数里为1010,于是在这边把第一位和第三位设置为1

        上面的声明,声明了32位的bieset对象,和数组一样,它的下标也要从0开始。

        我们还可以通过传递字符串的方式来初始化一个bitset的对象:

string bitval("1010");
bitset<32>bitvec4(bitval);

        如果使用的字符串长度比较长,我们还可以截取其中的一段来初始化bitset类型的对象:

string bitval( "1111110101100011010101" ); 
bitset< 32 > bitvec6( bitval, 6 ,4); // 从位置6开始,长度为4
bitset< 32 > bitvec6( bitval, 6 ,4); // 从位置6开始,直到结束

        我们可以把bitset类型转换成其他类型的对象:

string bitval( bitvec3.to_string() );  //转换成字符串
unsigned long bitval = bitvec3.to_ulong();//转换成无符号长型

        bitset类也支持位操作符。

13、优先级

        可以参考以下网址:https://learn.microsoft.com/zh-cn/cpp/cpp/cpp-built-in-operators-precedence-and-associativity?view=msvc-170
        
 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值