2012-01-31 55 views
1

說我有2位集算法模位集合

bitset<1024> test, current;

我怎麼到模量currenttest和輸出它在另一個bitset<1024>?請注意,test可能是任何形式的,不只是兩個權力?

尋找具有完整代碼或完整僞代碼的答案。我不接受涉及轉換爲除bitset之外的其他類型的答案,因爲儘管在此使用位集可能工作得較慢,但稍後在程序中位集將會非常快。

+0

「尋找具有完整代碼或完整僞代碼的答案。」 - >那麼,你到目前爲止嘗試過什麼?互聯網包含許多算法算法。我們不是顧問,而是志願者。 – 2012-01-31 13:19:37

+0

你需要一個128字節的整數,而不是一個bitset。 – kennytm 2012-01-31 13:20:05

+0

@KennyTM:爲什麼是128位? – 2012-01-31 13:21:49

回答

0

這裏的東西,如果你不希望自己實現的模數算法,你可以嘗試:

  1. 相反std::bitset的,使用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相同的字節順序。