问题标签 [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.
c++ - 位集二进制与运算
我写了以下几行:
我预计输出是:
但循环只输出'0000'。我缺少什么基本概念?
c++ - 实现对所有位的加法和访问的位集
这个问题与这个问题有关,因为我正在寻找一种添加 bitset(-like) 结构的方法。我需要一个类似于 bitset 的东西,它可以存储至少 2400 位,并且可以(随机)访问所有这些。该课程必须具备的第二个重要能力是加法,我需要能够添加至少 1。由于可能的大小(大约为 2,96 x10),作为数字的表示不起作用(我猜) ^722 和不舒服的位访问。是否有任何已知的有效实现?
algorithm - 如何实现位向量(bitset)(在Java中)?
是否有一些好的文本、书籍、pdf 或网站来解释如何实现位向量,尤其是在 Java 中?
我问这个问题是因为我想用 Java 制作自己的 BitSet 实现。原因是我想添加额外的功能和调整,如果我从 java.util 修改 BitSet Java 类则无法完成。此外,我想制作自己的实现,以便我可以在我的开源项目中使用它,而无需处理许可证。
谢谢!
c++ - std::bitset 位序可移植吗?
C++ 对位排序有什么说法吗?我特别致力于协议数据包布局,我怀疑是否有一种可移植的方式来指定将某个数字写入位 5、6、7,其中位 5 是“最重要的”。
我的问题:
- 0x01 是否总是表示为设置了第 7 位的字节?
- 总是
bitset<8>().set(7).to_ulong()
等于 1?
c++ - 如何使用 bitset < > 计算位转换
我是 C++ 新手。我想以 9 位序列计算从 0 到 0、0 到 1、1 到 0 和 1 到 1 的转换次数。我编写了以下代码;
有人请指导我以下
- 如何保存循环 2 中的最后一位值以检查从最后一个 bitset 输出的最后一位到下一个 bitset 输出的第 1 位的转换?
- 如果这不起作用,我如何将它保存在向量中并使用迭代器来检查转换?
c++ - 具有非八位字节对齐子字段的 96 位长位字段
我需要一个 96 位长的结构,我可以将自定义位字段放入其中。字段的长度无处不在,8
, 3
, 26
, 56
。重要的是它们保持这些确切的长度(有一个例外,见下文)。
我看到了许多将数据连接成单个紧凑字段的方法:std::bitset
, struct
s (连续保存字段),当然只使用int
s。然而:
这种
bitset
方法是有问题的,因为操作需要非常快地发生:bitset 没有提供一种方法来立即将 range 设置(x..y)
为整个 range(0..96)
,使用一个原子操作。如果我要循环设置单个位,那该死的。由于对长度的限制,这种
struct
方法是有问题的。该
int
方法是有问题的,因为int64_t
不够长。我当然可以int32_t
在此旁边使用 an ,但是请参见下文。
一个显而易见的解决方案是将56 + 8
字段放入int64_t
中,将其余部分放入 中int32_t
。这里的问题是56
-long 字段是唯一一个实际上可能在以后的开发中减少的字段,这意味着我将在.int64_t
32 - (26 + 3) = 3
int32_t
有什么方法可以尽可能紧凑地存储这些(从代码的角度来看),同时仍然能够通过掩码访问广泛的区域(不像std::bitset
)?
c++ - 如何在 C++ 中将 bitset 转换为short?
如果我有一个bitset<16> bits(*iter)
和一个我的短裤,我怎么能把这个 bist 分配给我的短裤?
可以将 bitset<16> 转换为 short 吗?
c++ - C++:动态位集
我在初始化我的dynamic_bitset
. 我有这个代码:
data1
从文件中读取的 32 位二进制数在哪里。
当我输出 的值时data1[j]
,它会输出我需要分配给 x 的正确值,但是当我输出 x 时(在假定的初始化之后),x 都是 1。
我究竟做错了什么?
编辑:我正在尝试解压缩代码。压缩代码以 32 位长的行给出。我想把所有东西都放在一个结构中以便于访问。
我初始化x的代码:
EDIT2:
每行有 8 行 32 位。该for
循环嵌套在一个while
循环中,该循环访问这 8 行 32 位二进制文件中的每一行并将该值分配给 data1,因此 data1 会随着循环的每次迭代而变化while
。
第一次迭代:
第二次迭代:
第三次迭代:
ETC....
我想x
成为一个包含所有这些值的长位集,这些值相互连接。
EDIT3:
尝试一种方法:
c++ - 将 bitset 成员函数 count 的输出放入向量中很慢
这是我遇到问题的 C++ 代码的一部分:
我的问题如下:
- 如果我评论第 1 行和第 2 行,则代码大约运行。109 毫秒;
- 如果我只评论 LINE2 代码运行大约。在 115 毫秒内;
- 如果我评论 LINE 1 并且 bit_count=0 代码运行大约 130 毫秒;
- 如果两行(第 1 行和第 2 行)均未注释,则代码大约运行。350 毫秒。
为什么我使用 LINE1 和 LINE2 时代码很慢?我找不到任何可以接受的解释。
请注意,我也尝试了 vec.push_back(bit_count),它也很慢。我也尝试了不同的演员操作,但没有成功。
c++ - 我怎样才能在内存中恰好有 2 位?
我应该能够将一个值存储在一个可以从 0 到 3 的数据结构中。所以我需要 2 位。这个数据结构我会很大2^16个位置。所以,我想要 2 ^ 16 * 2(位)。在 C++ 中,您是否曾经在内存中恰好有 2 位?