问题标签 [bitsets]

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 投票
1 回答
308 浏览

c++ - STL 位集问题

我有一个模板类“HEADER_FILE”,它有一个变量 bitset<>

我不能用

在头文件中,但是没有给出任何错误。

错误:template_id 不能出现在 using 语句中。

我哪里错了;

0 投票
5 回答
146 浏览

c - 标志位集,避免冲突,C

我有一个持有标志的整数,它有一组现有的可能标志:

我需要添加一个新的:

现有标志列表从 0x0200 一直跳到 0x8000 是否有原因?我的理解是我的新标志的可用值是 0x0400、0x0800 和 0x1000-0x4000。我是否误解了这些位集的工作原理?

0 投票
5 回答
551 浏览

java - 为什么不使用更确定大小的类型来实现 BitSet?

此处的 Java 参考表明布尔类型虽然用“位”信息表示,但没有精确定义的大小。相比之下,其他类型似乎表明定义了大小。例如,一个int是 32 位,故事结束。

当我们查看BitSet的规范时,我们可以看到它由布尔值组成。通过上面的参考,这似乎表明BitSet的“大小”是未定义的——毕竟它是由布尔值组成的。果然,文档指定:

请注意,大小与位集的实现有关,因此它可能会随着实现而改变。

所以我的问题是,为什么不使用另一种精确定义的数据类型来实现BitSet ?例如,如果我们使用一个字节,我们可以保证 8 位的大小,并且我们不会有大小可能不是我们想象的那样的模糊感觉。确实,大小必须能被 8 整除,但至少这种方式似乎更具大小确定性。

如果我们有一个绝对不能超过某个内存容量的系统,那么拥有一个在大小方面精确的BitSet实现似乎很有用。

0 投票
1 回答
377 浏览

c++ - 为什么使用字符串初始化的 C++ 位集被反转?

第一次,我用一个字符串初始化了一个位集,发现这些位是按相反的顺序存储的,即:

然后这些位存储如下: test[0] = 1 test[1] = 0 test[2] = 0

我不确定我做错了什么,或者这就是应该的方式。

0 投票
2 回答
2580 浏览

c++ - 初始化后如何从字符串中分配位集值

我知道可以使用整数或 0 和 1 的字符串来初始化位集,如下所示:

bitset<8> myByte (string("01011000")); // initialize from string

无论如何在初始化后使用上面的字符串来更改位集的值吗?

0 投票
2 回答
669 浏览

java - Java多位/紧凑小整数数组

我正在实现一些布隆过滤器变体,一个非常有用的数据结构将是一个紧凑的多位数组;也就是说,一个数组,其中每个元素都是大约 4 位的紧凑整数。

空间效率在这里是最重要的,所以虽然一个普通的整数数组会给我我想要的功能,但它会比必要的更笨重。

在我尝试用位算术自己实现这个功能之前,我想知道是否有人知道那里已经提供了这种数据结构的库。

编辑:静态大小很好。理想的情况是在每个单元的比特数方面灵活的实现。不过,这可能有点希望(没有双关语?)。

0 投票
1 回答
415 浏览

bitmap - 使用位集的社交图

我在一篇文章中看到了以下内容,这家互联网技术公司谈到了他们如何将社交功能融入到他们的应用程序中:

Apache Thrift、Krati Data Store、JavaEWAH Compressed Bitmaps 和 JRuby 构成了我们远程服务的一部分,它以高性能持久压缩位图格式存储我们的社交图。

我试图理解这一点。到目前为止,我已经弄清楚了 Apache Thift 的含义(以及为什么要使用它)、JavaEWAH、位集、社交图和 GUI 分析。Krati 数据源本身似乎没有一个好的 wiki/教程。此外,我无法理解设置,关于如何使用位集和上述技术存储和处理社交图。

如果你能解释一下并引导我找到相关资源。或者,如果您可以提出更好的替代方案来替代所描述的堆栈。

0 投票
1 回答
481 浏览

c++ - C++ 将 8 位位集转换为无符号长,VS 2010 - 不工作

下面的代码首先工作两次,然后第三次转换为 ulong 失败并给我一个 0XCF 而不是 0xF3。知道问题是什么吗?似乎是 VS 2010 to_long 中的一个错误。二进制“11110011”应转换为十六进制 F3!以下是在 VS 2010 下运行调试时的结果。

1ST TIME bc_bit_char b'11000011' 转换为 k = x'000000c3'; 第二次:bc_bit_char b'00111100' 转换为 k = x'0000003c' 第三次:bc_bit_char b'11110011' 转换为 k = x'000000cf' 错误!s/b x'000000f3'