问题标签 [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++ - 快速位集追加?
我正在寻找一种具有快速位附加功能的位集实现,其中可以一次有效地附加多个位。
例如
到目前为止,我已经尝试过 boost::dynamic_bitset 和 std::vector。两者都很慢。
旧帖子
我正在使用 boost::dynamic_bitset 来打包一些数据。
通常我想一次打包约 5 位,这会导致如下调用:
然而,这在我看来效率很低,不能一次添加所有位吗?
例如
我希望它会做类似的事情:
为什么dynamic_bitset没有这样的功能?是否有可能有效实施?
c++ - boost::dynamic_bitset 连接性能
我想以一种不会影响性能的方式将一个大的 bitset 与一个较小的 bitset 连接起来。目前,我的应用程序仅在以下代码中花费了 20% 的 cpu 时间:
我读过这篇文章,它提出了一个解决方案,不幸的是这对我不起作用,因为目标位集和源位集的大小之间的大小差异非常大。
有任何想法吗?
如果使用 boost::dynamic_bitset 无法有效地做到这一点,那么我愿意接受其他建议。
c++ - 在 C++ 中定义一个大的位集
在我的程序中,我需要检查我是否已经在一组 2.5*10^9 中生成了一个值。我希望生成大约一半的集合,并且需要有一种快速的方法来检查和更新它。在我看来,bitset 是一个好主意,因为它不需要太多内存(每个值 1 位)并且速度很快。
问题是,当我在课堂上定义我的集合时,我得到了一个segmentation fault
,因为尺寸太大(它适用于较小的尺寸)。
任何的想法 ?
谢谢
PS:如果可能的话,我宁愿不使用外部库。我已经在使用GMP,但我认为他们没有针对大量数字设置的实现。
c++ - 类中的c ++位集错误
我正在尝试在 C++ 中创建一个 Floodfill 算法,所以我的计划是创建一个 2D 数组,然后每个项目都是一个对象,并带有属性来检查它周围的墙壁。
我按以下方式记下墙壁,1 = 顶部 2 = 右侧 4 = 底部 8 = 左侧
所以 13 表示顶部/底部/左侧墙
但是当我使用时,std::bitset<sizeof(int)> bits(w);
我得到一个“预期的';' before '(' token 我该如何解决这个问题?我已经尝试了很多东西,但它就是行不通。
我的代码:
};
}
c++ - 将 char 数组转换为具有 4 位元素的向量
我想使用以下代码段
得到一个包含 3 个元素的向量看起来像 1101 1010 1010
但我无法获得预期的正确结果。
你可以帮帮我吗?谢谢!
java - 从 BitSet 转换为 Byte 数组
我选择了这个将 BitSet 转换为 Byte 数组的示例。
但是在讨论论坛中,我看到通过这种方法我们不会得到所有的位,因为每次计算都会丢失一个位。这是真的?我们需要修改上面的方法吗?
java - BitSet 和 Byte Array 值从相反方向设置
我有:
以及名为 BitComp 的类中的 getter 和 setter。以下类将所有前 8 位设置为 1(byte[0])。之后,它将所有字节转换为 BitSet。现在,当它将第二位设置为 true 并打印它们时。
输出:00000000000000000000000000000000011111111 <- 0th
0th-> 0100000000000000000000000000000011111111
不应该有任何变化,因为 byte[0] 包含前 8 个元素,我使用 BitSet 操作将第二个元素设置为 1。所以 BitSet 是从 LHS 接近的,而 Byte 数组是从 RHS 存储的。如何解决这个问题?getBitsFromByte 方法有问题吗?请建议。谢谢
c - C语言中的bitset类型使用什么类型
我必须定义一个 bitset 类型来构建位数组。在这些数组之间可以执行和/或/xor之类的位操作(例如,比较它们)并且是主要操作。我应该使用什么类型作为 bitset 类型?
我认为该类型应该是编译器可以处理的最广泛的 NOT SIMULATED 类型。即,如果编译器模拟 64 位类型(例如,如果机器或操作系统不支持它)屏蔽简单和之间的复合操作,则应使用 32 位类型。如何确定?
还有更多问题:
新的 c99 标头定义了一些类型(精确宽度整数类型),其中:
“它们的形式是 intN_t 和 uintN_t。这两种类型都必须用 N 位表示,没有填充位。intN_t 必须编码为二进制补码有符号整数,uintN_t 必须编码为无符号整数。除非实现支持类型,否则这些类型是可选的宽度为 8、16、32 或 64,则应将它们类型定义为具有相应 N 的相应类型。任何其他 N 都是可选的。
所以我认为检查 64 位类型的实现是第一步,对吧?
我的项目使用 SDL 库,它#defines 一个宏:
因此,也许我可以根据该宏来定义位集类型(但这不是最佳的,因为我想编写代码 sdl 独立)。
说说你对的看法。
c++ - 从任意位集子序列中提取长
有没有一种方法可以有效地从位集中提取 CPU 字长长的位子序列,而无需单独迭代每个位?就像是
如果它会截断位串而不是抛出异常,就会这样做!
c++ - c++ bitset 输出问题
我正在使用bitset,所以我想知道将base-10转换为base-2的最佳方法是什么,因为由于某种原因我得到了错误的答案:给出数字19,我希望看到:10011(16-2-1),为什么输出(00011)