博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
(C/C++学习)17.bitset(位操作)
阅读量:6308 次
发布时间:2019-06-22

本文共 1515 字,大约阅读时间需要 5 分钟。

说明:bitset 就像 vector 一样,是 C++ 的一个类模板库,用来对一个数的二进制位进行管理、判断等操作,使用时需要包含头文件 #include<bitset>。

 

1.声明及定义

格式:bitset<N> var(M)

其中 var 为 bitset 的类对象,N 表示该对象所占的位数,这里的位数指的是二进制。M 指的是 var 的初始值,可以是十六进制也可以是十进制,甚至还可以是 0-1 字符串。

1     string str("11111");  2     bitset<10> a(10);  3     //将a初始化为000001010  4     bitset<10> e(0xff);  5     //将e的后8位初始化为1  6     bitset<10> f(str);  7     //将f的后5位初始化为1  8     bitset<10> d;  9     //无参数时每位都初始化为0

 

2.位操作成员函数

1.text(pos)   

功能:测试 pos 为是否为1,是返回 1,不是返回 0。

2.any()

功能:测试所有位是否为 0 ,是返回0,不是返回1。

3.none()

功能:测试是否所有位为 0 ,是返回1,不是返回0.

4.count()

功能:统计位为 1 的个数并返回。

5.size()

功能:求取对象的大小(这里指的是位数)并返回。

6.flip(pos)

功能:将 pos 为翻转,即 0-1 变换,当无参时,则翻转所有位。

7.set(pos)

功能:将 pos 位置 1,当无参时,将所有位置 1 。

8.reset(pos)

功能:将 pos 为置 0 ,当无参时则将所有位置 0 。

 

示例:

1     bitset<10> a(10);  2     cout<<

程序运行结果:

1 0000001010  2 1  3 1  4 0  5 2  6 10  7 1111111111  8 0000000000  9 1111111111

 

值得注意的是:对某个对象的位可以像数组那样进行下标访问,并且还可以修改其 0-1 标志,如下修改对象的第 6 位并分别打印出各位:

1     bitset<10> a(10);  2     a[5] = 1;  3     for(int i = 0;i<10;i++)  4         cout<
<<"";

 

3.转换成员函数

bitset 对一个数进行了二进制位的操作,即将某个数转换成了二进制形式,并对二进制的某些位进行了操作(还有 0-1 字符串),那么如果我们需要用到修改了某个二进制位的数(0-1字符串)时,则需要通过转换函数来实现。

1.to_ulong()

功能:将对象以 unsigned long 类型返回,若对象经过了位操作函数的修改,则返回修改后的值。

2.to_string()

功能:将对象以 0-1 字符串的形式返回,若对象经过了修改,则返回修改后的值。如下代码输出为:10    0000001010 。

1     bitset<10> a(10);  2     int data = a.to_ulong();  3     string str = a.to_string();  4     cout<<<""<

 

注意:bitset 对象只接受整型数据,如果初始化一个带有小数的数时,将自动截断,取整数部分进行操作。

转载于:https://www.cnblogs.com/tuihou/p/9926058.html

你可能感兴趣的文章
使用OVS
查看>>
键盘回收的几种方法
查看>>
Python(条件判断和循环)
查看>>
day4 linux安装python
查看>>
LeetCode Container With Most Water (Two Pointers)
查看>>
vue (v-if show 问题)
查看>>
https基础
查看>>
css3 canvas之刮刮卡效果
查看>>
并查集模板
查看>>
RESTful Mongodb
查看>>
BZOJ3237:[AHOI2013]连通图(线段树分治,并查集)
查看>>
如何提高Ajax性能
查看>>
Android--自定义加载框
查看>>
LINUX下 lamp安装及配置
查看>>
BZOJ3105 [cqoi2013]新Nim游戏
查看>>
困惑的前置操作与后置操作
查看>>
SDNU 1269.整数序列(水题)
查看>>
BZOJ 2118 Dijkstra
查看>>
Go语言基础之结构体
查看>>
SpringCloud:Eureka Client项目搭建(Gradle项目)
查看>>