bitset

BitSet的应用 1.BitSet介绍 BitSet是用于存储二进制位和对二进制进行操作的Java数据结构,BitSet从jdk1.0开始就有了。它存储的是二进制位在BitSet中状态,根据对这些状态的判断,可以有很多应用。以前对数据的操作都是先把数据都是存储在内存中间的,现在可以通过设置BitSet的相应位达到存储数据信息的目的,极大的节省了内存空间。 2.BitSet应用 BitSet可以做的事情主要分为... 阅读详情

一、初始化 bitset 对象的方法

    bitset<n>b;

    b 有 n 位,每位都 0

    bitset<n> b(u);

    b 是 unsigned long 型 u 的一个副本

    bitset<n> b(s);

    b 是 string 对象 s 中含有的位串的副本    bitset<n> b(s, pos, n);

    b 是 s 中从位置 pos 开始的&nbps;n 个位的副本。

    用 string 对象初始化 bitset 对象时,string 对象直接表示为位模式。从string 对象读入位集的顺序是从右向左。

string strval("1100");
bitset<32> bitvec(strval);

bitvec4 的位模式中第 2 和 3 的位置为 1,其余位置都为 0。如果 string 对象的字符个数小于 bitset 类型的长度,则高阶位置为 0。

strval[0]=1----->bitvec[3]=1

strval[1]=1----->bitvec[2]=1

strval[2]=0----->bitvec[1]=0

strval[3]=0----->bitvec[0]=0

总结:从这里我们可以得知,bitset的对象的低阶位在最右边

string str("1111111000000011001101");
bitset<32> bitvec(str, 5, 4);                                                                                                   //用str[5]开始向右4位 "1100"初始化bitset的对象,得到:bitvec[31]=0....bitvec[4]=,0bitvec[3]=1,bitvec[2]=1,bitvec[1]=0,bitvec[0]=0      bitset<32> bitvec(str, str.size() - 4);                                                                                         //str的开始str[0]到str[27]均初始化为0,而str[28]=1、str[29]=1、str[30]=0、str[31]=1分别初始化bitset对象bitvec的bitvec[3]=1、bitvec[2]=1、bitvec[1]=0、bitvec[0]=1

二、bitset 对象上的操作

   由于书中翻译的感觉有点别扭,还是看英文的更加准确的理解这些操作,如下英文中的"on"即表示"1","off"则表示"0"

   b.any()---------------Is any bit in b on?

   b.none()--------------Are no bits in b on?

   b.count()-------------Number of bits in b that are on

            -------------count操作的返回类型是标准库中命名为size_t 类型

   b.size()--------------Number of bits in b

           --------------size操作的返回类型是标准库中命名为size_t 类型 如:size_t sz = bitvec.size();

   b[pos]----------------Access bit in b at positionpos

   b.test(pos)-----------Is bit in b in position pos on?

   b.set()---------------Turn on all bits in b

   b.set(pos)------------Turn on the bit in b at positionpos

   b.reset()-------------Turn off all bits in b

   b.rest(pos)-----------Turn off the bit in b at positionpos

   b.flip()--------------Change the state of each bit in b

   b.flip(pos)-----------Reverse value of the bit in b in positionpos

   b.to_ulong()----------Returns an unsigned long with the same bits as inb

   os<<b-----------------Prints the bits in b to the streamos

三、访问 bitset 对象中的位

   通过下标来访问,在此就不再赘述了。

四、对整个 bitset 对象进行设置

bitvec.reset(); // set all the bits to 0.
bitvec.set();   // set all the bits to 1
bitvec.flip(0);   // reverses value of first bit
bitvec[0].flip(); // also reverses the first bit
bitvec.flip();    // reverses value of all bits

五、获取bitset对象的值

六、输出二进制位

bitset<32> bitvec2(0xffff); // bits 0 ... 15 are set to 1; 16 ... 31 are 0
cout << "bitvec2: " << bitvec2 << endl;

输出结果为:

     bitvec2: 00000000000000001111111111111111

 

别再只调A*算法了!聊聊ROS机器人导航中,OpenCV视觉信息如何与激光雷达数据“打配合” 本文探讨了ROS机器人导航中激光雷达与OpenCV视觉融合的实战策略,揭示了如何通过多模态感知提升导航精度。文章详细介绍了视觉特征到代价地图的转化方法、系统级挑战的工程解决方案,以及融合感知下的路径规划进化,帮助开发者优化机器人导航系统。 阅读详情

相关推荐

SAP 批量处理分包事后调整:BAPI_GOODSMVT_CREATE 关键参数与避坑指南

本文详细解析了SAP系统中使用BAPI_GOODSMVT_CREATE进行分包事后批量调整的关键参数配置与常见错误排查。重点介绍了GOODSMVT_CODE设置为'07'的必要性、GOODSMVT_ITEM结构体的正确配置方法,以及如何避免M7384、M7386等常见错误,帮助用户高效处理分包业务中的数量调整问题。

weixin_29276847的博客 568

C++——std::Bitset

写在前面 这一篇文章系统的学习一下std标准库中的容器bitset,一个bitset是用来储存诸多bit,这些元素可以用来表示两种状态:0或1,true或false…。所以有一些时候可以很方便的用该容器快速实现状态储存。 该容器通过对空间的特殊优化,使得该容器对状态的储存空间非常小,相当于将若干状态储存在一个个bit上。该容器的元素访问也可以通过[n]访问容器中第n个元素,但是由于一般语言没有...

zy2317878的博客 1万+

Unity3d实现的十字路口的模拟(一)

最近学习了Unity3d这个游戏引擎,感觉真的是非常的强大,正好赶上操作系统课程要做一个模拟信号量的模拟程序,于是打算做一个模拟十字路口的程序,大致的实现要实现的成果是:存在四种不同的汽车,包括一辆警车(不受交通信号灯的控制)随机产生在不同的路口,并且有不同的行动路线如:直走,左转,右转等,当然还有交通信号灯来控制车辆的有序运行。可以展示不同的视角来观察路口的情况(利用Q,W,E,R分别控制不同的

永远在身边的专栏 7489

图论简单算法小总结

八数码 #pragma comment(linker, "/STACK:1024000000,1024000000") #include<cstdio> #include<cstring> #include<algorithm> #include<iostream> #include<string> #include<vector> #include<stack> #include<bitset> #includ

谁是凶手1703 196

Halcon实战:5分钟搞定金属表面划痕检测(附完整代码解析)

本文提供了一份基于Halcon的金属表面划痕检测实战指南。通过核心的动态阈值算法,快速从图像中提取局部对比度异常区域,并结合形态学后处理与特征筛选,精准识别划痕。文章详解了从代码搭建、参数优化到工业场景适配的全流程,帮助工程师在五分钟内构建稳定高效的机器视觉检测方案。

weixin_29084231的博客 496

SAP GR(Group Reporting)合并报表内容及功能简介(五)-合并和抵消

随着合并和收购数量的显著增加,企业在全球经济中面临着诸多挑战。其中最常见的是法律实体与子公司之间缺乏透明度,导致无法以经济高效的方式对账法律实体与子公司之间的公司间交易,从而造成结算出现重大延迟。公司间匹配和对账功能允许用户在关账过程中进行早期分析,以避免公司间差异,并缩短关账时的延迟。公司间匹配和对账功能交易级别匹配和实时对账基于各种组织维度(如公司、利润中心和合并单位)的灵活建模自动差异解决。应用内通信和工作流。与公司间抵销集成。

weixin_43853754的博客 4403

std::bitset使用

std::bitsetstd::bitset模板文件声明初始化重载的位操作符访问赋值其他函数转换 std::bitset bitset是一种类似于数组的结构,不过只能存1or 0,而且优化内存空间,一个元素只占1bit 模板文件声明 //注意bitset中存储的最大bits数由模板参数N决定 template <size_t N> class bitset; 因为上面的size_t N决定了bitset最多存储的位数,所以得先看看size_t的定义 关于size_t定义   size_t是一种

selfsongs 4647

HLA分型

HLA分型 一、根据WES的tumor数据进行数据分型 选用hlahd 软件安装及使用 [root@18605fd8771e ~]# wget https://jaist.dl.sourceforge.net/project/bowtie-bio/bowtie2/2.4.1/bowtie2-2.4.1-linux-x86_64.zip [root@18605fd8771e ~]# unzip bowtie2-2.4.1-linux-x86_64.zip && mv bowtie2-2.4.1

qq_23435961的博客 2489

C++学习笔记--STL标准模板库的认识与使用--关联式容器--bitset

1、什么是bitset? C++ Bitset (1)给程序员提供一种位集合的数据结构。Bitsets使用许多二元操作符,比如逻辑和,或等。 (2)std::bitset是标准库中的一个存储0/1的大小不可变容器。严格来讲,它并不属于 STL。 2、头文件 #include <bitset> 3、指定大小 bitset<1000> bs; // a bitset with 1000 bits 4、相关操作 Constructors 创建新...

有朋自远方来,不亦乐乎。 579

最佳RANSAC算法拟合矩形的实现(基于PCL库)

最佳RANSAC算法是一种常用的参数估计方法,用于从数据集中拟合出最佳的模型。在计算机视觉和图像处理领域,最佳RANSAC算法常用于拟合几何形状,如矩形。本文将详细介绍如何使用点云库(PCL)中的最佳RANSAC算法来拟合矩形,并提供相应的源代码。

JbPatch的博客 1544

ESP32-IDF开发之旅 基础篇⑨ ESP-IDF的FreeRTOS任务间通信和同步

本文介绍了FreeRTOS任务间通信中的队列机制,重点讲解了队列的创建、发送和接收数据的API使用方法。文章提供了详细的技术说明和示例代码,包括xQueueCreate、xQueueSend、xQueueReceive等核心函数的参数说明和返回值解释。通过一个2生产者+1消费者的实际案例,展示了如何在ESP-IDF环境下使用FreeRTOS队列实现任务间通信。示例中包含了数据发送失败处理和接收数据验证等实用技巧,为开发者提供了可参考的实现模式。

单片机菜鸟哥的博客 429

STL中便捷的bitset

有些程序要处理二进制位的有序集,每个位可能包含的是0(关)或1(开)的值。位是用来保存一组项或条件的yes/no信息(有时也称标志)的简洁方法。标准库提供了bitset类使得处理位集合更容易一些。要使用bitset类就必须要包含相关的头文件。在本书提供的例子中,假设都使用了std::bitset的using声明:

浮白 4306

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

bitset详解

bitset常见用法详解

行码棋 1万+

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

Java 中 BitSet

Java 中 BitSet 就是“位图”数据结构,根据“位图”的语义,数据的存在性可以使用 bit 位上的1或0来表示;一个 bit 具有2个值:0和1,正好可以用来表示 false 和 true。对于判断“数据是否存在”的场景,我们通常使用 HashMap 来存储,不过 hashmap 这个数据结构 Key 和 Value 的保存需要消耗较多的内存,不适合保存较多的数据,即大数据场景

zhangxin09的专栏 8293

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

bitset用法总结

第一行国际惯例咕咕咕。 第二行——学习之路任重而道远。 以下为正文: 1.bitset是一种类似于数组的结构,不过区别是只能存1or0,而且优化内存空间,一个元素只占1bit 2.相关输出只能用cout 3.bitset的大小在编译时已经确定了 构造 1.<>里的参数表示bitset的大小 2.不够的位数自动补0 3.size小于附的值时,int取后几位,str...

MoonLight_月亮 6431

c++ bitset 基本用法

bitset存储二进制数位。 bitset就像一个bool类型的数组一样,但是有空间优化——bitset中的一个元素一般只占1 bit,相当于一个char元素所占空间的八分之一。 bitset中的每个元素都能单独被访问,例如对于一个叫做foo的bitset,表达式foo[3]访问了它的第4个元素,就像数组一样。 bitset有一个特性:整数类型和布尔数组都能转化成bitset。 bitset的大小...

风知我意否的博客 1万+

C++——bitset

bitset——简单又方便的位运算工具

JAN6055的博客 1万+

c++ <bitset> bitset函数

1. bitset 函数

JIAN_ZANG1125的博客 3194

scala bitset_Scala中的BitSet

scala bitset Scala BitSet (Scala BitSet) Set is a collection of unique elements. 集合是唯一元素的集合。 Bitset is a set of positive integers represented as a 64-bit word. 位集是一组表示为64位字的正整数。 Syntax: 句法: ...

cumt951045的博客 752

BitSet的实现原理

1.BitSet介绍 Bitset是Java中的一种数据结构。Bitset中主要存储的是二进制位,做的也都是位运算,每一位只用来存储0,1值,主要用于对数据的标记。 Bitset的基本原理是,用1位来表示一个数据是否出现过,0为没有出现过,1表示出现过。使用的时候可以根据某一个位是否为0表示此数是否出现过。JDK中的BitSet集合对是布隆过滤器中经常使用的数据结构Bitmap的相对简单的实现...

forever-and-ever的博客 2万+

golang的BitSet

1.BitSet是什么 BitSet是借鉴位图(BitMap)概念创造的一个数据结构。所谓的BitMap 就是用一个 bit 位来标记某个元素对应的 Value,而 Key 即是该元素。由于采用了 Bit 为单位来存储数据,因此在内存占用方面,可以大大节省。(《编程珠玑》第一章引入的问题,提到了 Bitmap) BitSet的好处是用很小的空间标记已存的数据(每一bit对应)。 在查找中,我...

wangzhezhilu001的专栏 1695

Java BitSet

适用于操作整型数据。每个数据由一位bit表示,也就是说每一个整型只需一个bit的控件,这个比collection等容器是有天大的优势啊。而且插入和查询都非常方便,因为bit的index和整型数值相等,如:存储127,那么BitSet中的第127位bit就被置为1。查找127是否在BitSet中,只需使用MASK进行与操作即可。 但是可以想象到,BitSet中至少需要有多少位bit,决定于存储在B...

淡淡的宁静的博客 1247

Bitset习题

Bitset习题 G.Greater and Greater 思路:bitsetbitsetbitset,先对A,BA,BA,B从大到小排序,然后对每个BiB_iBi​,找到Aj≥BiA_j\geq B_iAj​≥Bi​的所有位置jjj, 然后用bitsetbitsetbitset储存起来,记为ggg,当Aj≥BiA_j\geq B_iAj​≥Bi​时,gj=1g_j=1gj​=1。 因为Bi≤Bi−1,B_i\leq B_{i-1},Bi​≤Bi−1​,所以可以直接继承上一次的ggg。 实际上就是mmm个

Harris-H的博客 1016

BitSet

如果想要高效率地存储大量“开-关”信息,BitSet 是很好的选择。不过它的效率仅是对 空间而言。如果你需要高效率的访问时间,BitSet 比数组稍慢一点。 此外,BitSet 的最小容量是 long:64 bit。如果你存储的内容比较小,例如 8 bit,那么 BitSet 就浪费了一些空间。因此如果空间对你很重要,最好撰写自己的类,或者直接采用 数组来存储你的标志信息。

u011282142的专栏 729

关于bitset的一点疑问

文档中,基本都是如此定义了bitset的一个ctor: bitset(      const basic_string& _Str,      typename basic_string::size_type         _Pos = 0,      typename basic_string::size_type         _Count = basic_string::npos   )

不亦快斋 1585

BitSet的用法

1,BitSet类大小可动态改变, 取值为true或false的位集合。用于表示一组布尔标志。    此类实现了一个按需增长的位向量。位 set 的每个组件都有一个 boolean 值。用非负的整数将 BitSet 的位编入索引。可以对每个编入索引的位进行测试、设置或者清除。通过逻辑与、逻辑或和逻辑异或操作,可以使用一个 BitSet 修改另一个 BitSet 的内容。默认情况下,set 中所有位...

aqCat的博客 3899
上一篇: WMS仓储管理系统实现"收发存日报表"数据查询功能Sql语句--Oracle
下一篇: 进制之间的转换
p_m_notes
博客等级 码龄14年 3粉丝 22原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值