bitset类型

bitset类型

一、bitset简介

1、标准库定义了bitset类,使得位运算的使用更容易,并且能够处理超过最长整型类型大小的位集合。
2、定义在头文件bitset中。

二、定义和初始化bitset

1、当我们定义一个bitset时,需要声明它包含多少个二进制位。
2、bitset中的二进制位也是未命名的,我们通过位置访问他们。
编号从0开始的二进制位被称为低位,编号到末尾为高位。
3、

bitset< n > b;b有n位,每位均为0
bitset< n> b(u)b是u低n位的拷贝,若位数不够,先填低位,不足的高位补0
bitset< n> b(s,pos,m,zero,one)b是s从位置pos开始m个字符的拷贝。s只包含zero或one,pos默认为0,zero默认为’0’,one默认为’1’
bitset< n> b(cp,pos,m,zero,one)cp是指向字符数组中拷贝字符
bitset<13> bitve1(0xbeef);   //二进制1111011101111
bitset<20> bitvel(0xbeef);   //二进制序列00001011111011101111
bitset<128> bitvel(~oULL);   //0~63位为1,63~127位为0
bitset<32> bitvel("1100");  //2,3位为1,其余位为0

字符串 1100 ,11是高位,00的低位。

三、bitset操作

b.any()b中是否存在置位的二进制
b.all()b中所有位都置位了
b.one()b中不存在置位的二进制位吗
b.count()b中置位的位数
b.size()返回b中二进制的位数
b.test(pos)若pos是置位,返回true,否则false
b.set(pos,v)把pos位置的位设置为bool值的v,v默认为true
b.set()把全部位置位
b.reset(pos)将pos位置的位复位
b.reset()把全部位置的位复位
b.flip(pos)改变pos位置的位状态
b.flip()改变全部位置的状态
b[pos]访问pos位置的位
b.to_ulong()返回一个unsigned long值
b.to_ullong()返回一个unsigned longlong值
b.to_string(zerp,one)返回一个string
os<<b打印b
is>>b读取字符
bitset<32> bitvec(1U);   //32位,低位为1,剩余位为0
bool is_set=bitvec.any();  //true,因为有1位置位
bool is_not_set=bitvec.none();//false 有1位置位
bool all_set=bitvec.all();//false 只有一位置位
size_t onBites=bitvec.count();// 返回1
size_t st=bitvec.size();//返回32
bitvec.flip();//翻转所有位
bitvec.reset();//将所有位复位
bitvec.set();//将所有位置位
#include<iostream>
#include<bitset>
using namespace std;
int main() {
	bitset<32> bitvec(1U);
	cout <<"bitvec=" << bitvec << endl;
	bitvec.flip();
	cout << "翻转所有位=" << bitvec << endl;
	bitvec.reset();
	cout << "所有位复位=" << bitvec << endl;
	bitvec.set();
	cout << "所有位置位=" << bitvec << endl;
	return 0;
}

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值