本系列为应付考研复试用,知识浅入浅出,很多地方不深究细节原理;如有谬误,欢迎大家指出。
bitset
【bitset:位集,比特集】
理解为比特集。特点是 ①只能存入0与1 ②小端存储(可参阅计算机组成原理知识,表现为按b[i]增序输出时会倒序输出)
需提供头文件#include <bitset>
创建
注:
①存储时按照小端存储方式
②按unsigned int格式转换存入时,如过大溢出则会保留低位(如62则会保留低5位,即11110,30)
③按字符串格式存入时,如溢出则会对字符串剩余部分进行截断
1 string s = "1010"; 2 bitset <5> b1; //默认为全0 3 bitset <5> b2(10); //将unsigned int值转换为二进制数,再进行存储 4 bitset <5> b3(s); //将字符串读入低位,高位不足时会补充0 5 bitset <5> b4(s,2,2); //从字符串s的s[2]开始,读入2个比特值
设1
使用.set(下标)方法将指定位置设置为1。
b.set(2);
归0
使用.reset(下标)方法将指定位置设置为0。若不填写下标,将整个bitset全部归0。
b.reset(2); b.reset();
取反
使用.flip(下标)方法将指定位置进行取反。若不填写下标,将真个bitset全部进行取反。
b.flip(2); b.flip();
测试
使用.test(下标)方法对指定位置进行测试,查验是否为1。是则返回1,否则返回0。
b.test(2);
验1
使用.any()方法和.none()方法验证整个bitset中是否存在1。二者正好相反。
对于.any()方法,若存在1返回1,否则返回0。
对于.none()方法,若不存在1返回1,否则返回0。
b.none();
获取1个数
使用.count()方法统计bitset中的1的个数。
cout << b.count();
获取长度
使用.size()方法获取整个bitset的长度。
cout << b.size();
转unsigned long
使用.to_ulong()方法进行数据类型的转换。(但是没有类似的.to_uint()方法)
unsigned long l = b.to_ulong(); cout << l;
标签:返回,下标,浅入,unsigned,C++,取反,STL,bitset,方法 From: https://www.cnblogs.com/Jianxian/p/17991382