C转C++速成浅入浅出系列——STL之bitset

本系列为应付考研复试用,知识浅入浅出,很多地方不深究细节原理;如有谬误,欢迎大家指出。

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;

 

posted @ 2024-01-27 14:49  Jianxian  阅读(2)  评论(0编辑  收藏  举报