首页 > 其他分享 >【数据结构】bitset用法

【数据结构】bitset用法

时间:2023-08-09 19:01:07浏览次数:35  
标签:bitsets2 cout bitsets1 int 用法 bitset 数据结构 string

bitset用法

bitset可以说是一个多位二进制数,每八位占用一个字节,因为支持基本的位运算,所以可用于状态压缩,n位bitset执行一次位运算的时间复杂度可视为n/32.

输出只能用cout

1.构造:

int a = 5;
string b = "1011";
char c[4] = {'1','0','1','0'};
bitset<10>s1(string("1001"));     //0000001001
bitset<10>s2(int(8));             //0000001000
bitset<10>s3(8);                  //0000001000
bitset<4>s4(string("10001"));     //1000
bitset<4>s5(int(32));             //0000
bitset<4>s6;                      //0000
bitset<4>s7(a);                   //0101
bitset<4>s8(b);                   //1011
bitset<4>s9(c);                   //1010
  • 不够的位数自动补0

  • size小于附的值时,int取后几位,string取前几位

  • 不进行赋初值时,默认全部为0

2.运算:

bitset<4>s1(string("1001"));
bitset<4>s2(string("1000"));
s1[1] = 1;                    
cout<<s1[0]<<endl;              //1
cout<<s1<<endl;                 //1011
cout<<(s1==s2)<<endl;           //0
cout<<(s1!=s2)<<endl;           //1
cout<<(s1^s2)<<endl;            //0011
cout<<(s1&s2)<<endl;            //1000
cout<<(s1|s2)<<endl;            //1011
cout<<(~s1)<<endl;              //0100
cout<<(s1>>1)<<endl;            //0101

3.函数:

bitset<4>s1(string("1001"));
bitset<4>s2(string("0011"));

cout<<s1.count()<<endl;//用于计算s1中1的个数
cout<<s1.size()<<endl;//s1的位数

cout<<s1.test(0)<<endl;//用于检查s1[0]是0or1并返回0or1
cout<<s1.any()<<endl;//检查s1中是否有1,并返回1or0
cout<<s1.all()<<endl;//检查s1中是否全部为1,并返回0or1
cout<<s1.none()<<endl;//检查s1中是否全不为1,并返回0or1

// flip
cout<<s1.flip(2)<<endl;//将参数位取反,0变1,1变0
cout<<s1.flip()<<endl;//不指定参数时,每一位取反

// set
cout<<s1.set()<<endl;//不指定参数时,每一位变为1
cout<<s1.set(3,1)<<endl;//指定两位参数时,将第一参数位的元素变为第二参数的值,第二参数位只能为0or1
cout<<s1.set(3)<<endl;//只有一个参数时,将参数下标处变为1

// reset
cout<<s1.reset(4)<<endl;//一个参数时将参数下标处变为0
cout<<s1.reset()<<endl;//不传参数时将bitset的每一位变为0

string s = s1.to_string();  //将bitset转换成string
unsigned long a = s1.to_ulong();  //将bitset转换成unsigned long
unsigned long long b = s1.to_ullong();  //将bitset转换成unsigned long long

标签:bitsets2,cout,bitsets1,int,用法,bitset,数据结构,string
From: https://www.cnblogs.com/marti88414/p/17617761.html

相关文章

  • VC用法汇总
    (1)如何通过代码获得应用程序主窗口的指针?主窗口的指针保存在CWinThread::m_pMainWnd中,调用AfxGetMainWnd实现。AfxGetMainWnd()->ShowWindow(SW_SHOWMAXMIZED)//使程序最大化.(2)确定应用程序的路径UseGetModuleFileName 获得应用程序的路径,然后去掉可执行文件名。Example......
  • 8.9-上午电机座的用法 电极座基准点不是整数的话需要用点改为整数
      ......
  • JavaScript用法
    JavaScript用法HTML中的JavaScript脚本代码必须位于<script>和</script>标签之间。Javascript脚本代码可被放置在HTML页面的<body>和<head>部分中。<script>标签<script>和</script>之间的代码包含了JavaScript<!DOCTYPEhtml><htmllang="en">......
  • Go语言中三个点的用法
    在Go语言中,三个点...在不同的上下文中有不同的含义。以下是一些常见的情况:可变参数(VariadicParameters):在函数定义中,...用于表示可变参数,允许函数接受不定数量的参数。这些参数被封装在一个切片中。funcfoo(values...int){//values是一个int切片for_,v......
  • c++中template的用法是什么?
    下文由ChatGPT生成在C++中,template是一种通用编程工具,用于创建通用的函数或类。通过使用模板,可以编写可以应用于不同数据类型的函数或类,从而实现代码的重用性和灵活性。template的使用方法如下:1.函数模板(FunctionTemplates)函数模板允许定义一个通用的函数,可以在不同数据类......
  • select的错误用法
     执行 manselect 会有如下提示 说明调用select函数时传入的timeval的值会变,所以在重复调用select的场景下,每次调用select,timeval的值都需要重新设置,如下是一个错误的示例,需要将设置时间值的代码移到while(1)里面 ......
  • Modbus的数据结构
    本文是基于modbus协议书英文原版的阅读理解,对其进行了翻译和摘取,如有不当之处,还请指出,望不吝赐教。一、基本概念明确在开始之前,首先明确一些基本概念:位:单位bit,缩写为b,最小的数据单位字节:单位bytes,缩写为B,一个字节拥有8位字:字是其用来一次性处理事务的一个固定长度的位组,其长......
  • merge into语句用法
    原文地址:https://zhuanlan.zhihu.com/p/47884584使用merge语句从一个或多个源中选择行以进行更新或插入表或视图。可以指定条件以确定是update还是insert目标表或视图。merge语句是组合多个操作的便捷方式。它可以让你避免多次使用INSERT,UPDATE和DELETE语句去操作数据。语法:m......
  • 分区函数Partition By的用法
    原文地址:https://blog.csdn.net/locken123/article/details/127411319前言:partitionby关键字是分析性函数的一部分,它和聚合函数(如groupby)不同的地方在于它能返回一个分组中的多条记录,而聚合函数一般只有一条反映统计值的记录。partitionby用于给结果集分组,如果没有指定那么它......
  • Pandas学习挑战第三关-数据结构DataFrame
    Pandas数据结构-DataFrameDataFrame是一个表格型的数据结构,它含有一组有序的列,每列可以是不同的值类型(数值、字符串、布尔型值)。DataFrame既有行索引也有列索引,它可以被看做由Series组成的字典(共同用一个索引)。DataFrame构造方法如下:pandas.DataFrame(data,index,column......