模位集算法

发布于 2025-01-01 04:46:39 字数 319 浏览 1 评论 0原文

假设我有 2 个位集

bitset<1024>; test, current;

我该如何用 testcurrent 取模并将其输出到另一个 bitset<1024> 中?请注意,test 可以是任何形式,而不仅仅是 2 的幂?

寻找完整代码或完整伪代码的答案。我不会接受涉及转换为除 bitset 之外的其他类型的答案,因为虽然在这里使用位集可能会工作得更慢,但在程序的后面位集将会非常快。

Say I have 2 bitsets

bitset<1024> test, current;

How am I supposed to modulus current with test and output it in another bitset<1024>? Note that test may be of any form, not just powers of two?

Looking for an answer with either complete code or complete pseudocode. I will not accept answers involving converting to another type except bitset because although using bitsets here may work slower, but later in the program bitsets are going to be very fast.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

罗罗贝儿 2025-01-08 04:46:39

如果您不想自己实现模算法,可以尝试以下方法:

  1. 使用 boost::dynamic_bitset
  2. 使用 boost::to_block_range 复制位集的字节到缓冲区。
  3. 使用众多 bigint 库之一来表示 256 字节整数。
  4. 使 256 字节 bigint 使用步骤 #2 中复制的字节。
  5. 对 bigint 执行模运算。
  6. 将结果转换回 dynamic_bitset
  7. 利润

希望有一个 bigint 库可以让您访问其缓冲区,以便您可以将字节从 dynamic_bitset 直接复制到 bigint 中。

希望与模运算本身相比,复制 256 个字节的开销可以忽略不计。

哦,bigint 表示形式应该与 dynamic_bitset 具有相同的字节顺序。

Here's something you could try if you don't want to implement the modulo algorithm yourself:

  1. Instead of std::bitset, use boost::dynamic_bitset.
  2. Use boost::to_block_range to copy the bitset's bytes to a buffer.
  3. Use one of the many bigint libraries to represent a 256-byte integer.
  4. Make the 256-byte bigint use the bytes copied in step #2.
  5. Perform the modulo operation on the bigint.
  6. Convert the result back to a dynamic_bitset.
  7. Profit

Hopefully, there's a bigint library out there that lets you access its buffer, so that you can copy the bytes from the dynamic_bitset directly into the bigint.

And hopefully, the overhead of copying the 256 bytes around is negligible compared to the modulo operation itself.

Oh, and the bigint representation should have the same byte order as the dynamic_bitset.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文