问题标签 [std-bitset]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
44 浏览

hex - 位集到十六进制转换

我正在将 256 位长的 std::bitset 转换为 64 位长的十六进制表示。我正在尝试验证相同的正确性。您能帮我解决以下问题吗:例如:如果在 bitset<256> 中设置了第 82 位,那么将在 64 位十六进制表示中设置哪个位?

0 投票
0 回答
69 浏览

c++ - 将 std::bitset 存储到磁盘占用太多内存

我很难找出为什么我bitset在将其写入磁盘时占用 29MB 内存。即写出的文件是29MB 大。bitset我用以下方式写出:

如果我执行以下操作,则表明bitset仅使用3702712字节:

我在这里想念什么?它看起来像是使用 1 字节换 1 位。我希望该文件的大小仅为~3.7 MB,因为我想要一个字节中的实际 8 位。

0 投票
2 回答
79 浏览

c++ - 二维位集和方括号运算符

对于个人项目,我需要使用 2D 位集。进行了大量的谷歌搜索,发现了一个非常棒的帖子,其中包含非常有用的代码,https: //forums.codeguru.com/showthread.php?522711-Need-2-dimensional-Bitarray 。来看看答案monarch_dodra

结尾如果有如下语句

我使用“a(1,1)”而不是“a[1][1]”。长话短说,这是一种更好的方法。如果您必须具有 a[1][1] 语法,那么我建议编写一个返回代理对象的 operator[j],它本身具有一个 operator[i],它只是转发回 (j, i)。然后,如果需要,您可以将 operator()(i, j) 移动到受保护的位置。

看不懂作者在说什么?如何实现这个代理对象?我将不胜感激。

0 投票
3 回答
294 浏览

c++ - 在编译时初始化非常大的 C++ std::bitset

我想存储一个 2 16位的静态常量位集,其中包含永远不会改变的 1 和 0 的特定序列。

我想过使用这篇文章提出的初始化字符串:

但是编译器(VS2013)给了我“字符串太长”的错误。

更新

我尝试按照上面链接的帖子中的建议将字符串拆分成更小的块,如下所示:

但我收到错误C1091: compiler limit: string exceeded 65535 bytes in length。我的字符串是 65536 字节(技术上是 65537,带有 EOS 字符)。

我还有哪些其他选择?

更新

感谢luk32,这是我最终得到的漂亮代码:

0 投票
1 回答
77 浏览

c++ - 如何从输入创建具有大小的位集

我想创建一个我输入的大小的位集,如下所示:

但是当我运行此代码时,我收到以下错误:

当我设置l为某个整数时它工作正常,const int l = 6但是当我将它更改为const int l = a. 我怎样才能解决这个问题?

*编辑:感谢那些帮助我的人,我想我知道我需要做什么。我可以创建一个大尺寸的位集,然后我可以忽略比我的输入长的位。

0 投票
0 回答
63 浏览

c++ - 如何按数组顺序初始化位集?

Astd::bitset不是整数,它是位数组。但是当我用正确顺序的位初始化它时(就像我使用数组一样),似乎所有位都像 Endian 交换一样被反转了。

我想要的模式是:

我用这个初始化:

但是当我使用打印出数组元素的函数时,我得到了这个:

我想要的是这样的:

我知道我可以手动将所有位向后放入初始化字符串中,但这非常繁琐且容易出错。我正在寻找一种解决方案,我可以将它们按照与初始化数组时相同的顺序放置,首先使用 Element[0]。

我想做这个:

如何bitset按数组顺序初始化一个元素?

0 投票
1 回答
120 浏览

c++ - 有希望在不久的将来将 std::bitset<128> 转换为单个 128 位整数吗?

我正在使用 std::bitset 来表示短 DNA 序列(单倍型)。出于我的目的,我需要能够将每个这样的序列转换为一个整数。目前,由于 std::bitset::to_ullong 的工作方式,这个要求似乎将我的序列长度限制为 <=64?

由于在 C++ 中有表示 128 位整数的方法(C++ 中有 128 位整数吗?),我想知道在 std::bitset 也支持直接转换为 128 位整数之前需要多长时间?

当然,我会很高兴得知我错了,而且已经可以做到了……

谢谢!

0 投票
1 回答
38 浏览

c++ - 是否有必要检查位表示 C++ 中的范围

一些数据存储在 64 位整数中。如您所见,在getDrvAns函数内部,我检查该位置的位 drvIdx-1是否为01。人们无法确定drvIdx将有一个正确范围内的值(1-64)。但是,我注意到,如果我们将值设置为高于 64,则会产生环绕效果,如下面的代码所示。

我的问题是,这是标准行为吗?在没有边界检查的情况下保持原样是否安全?

注意:如果该位设置为0驱动器已应答。

0 投票
0 回答
58 浏览

c++ - 尝试在类中定义 std::bitset 时出现“错误:数字常量之前的预期标识符”

我正在尝试std::bitset<16>在我的类中创建一个类型的变量:

但是程序无法编译并出现以下错误:

我不知道我做错了什么。bitset 定义是直接从文档示例中复制的,因此我认为它不会引发任何错误。我一直在尝试解决这个问题,但只注意到如果我在没有任何参数的情况下初始化位集,程序就会编译,这无论如何都不是我想要做的。