模数组的算法

时间:2012-01-31 13:11:58

标签: c++ algorithm binary modulo bitset

说我有2个位集

bitset<1024> test, current;

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

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

1 个答案:

答案 0 :(得分:0)

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

  1. 使用boost::dynamic_bitset
  2. ,而不是std::bitset
  3. 使用boost::to_block_range将位集的字节复制到缓冲区。
  4. 使用众多bigint库中的一个来表示256字节的整数。
  5. 使256字节的bigint使用步骤#2中复制的字节。
  6. 对bigint执行模运算。
  7. 将结果转换回dynamic_bitset
  8. 利润
  9. 希望有一个bigint库允许你访问它的缓冲区,这样你就可以将dynamic_bitset中的字节直接复制到bigint中。

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

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