-2

私は c++ BigInteger ライブラリを持っています。大きな乱数から正確な 125 ビットの bigInteger を作成する必要があります。作成した 125 ビットの数値に対して、右シフト、左シフト、setbit、getbit、NOT、OR、XOR、AND 操作を実行する必要があります。上記の操作を行うためにどのライブラリを使用する必要がありますか? 誰でも私を助けてください。

4

1 に答える 1

0

big integer library用語を使用した Google 検索により、 C++ Big Integer Libraryが得られました。ウェブサイトから:

このライブラリは、速度よりも使いやすさと実装の明快さを重視しています。高速な GMP を好むユーザーもいます。

編集:

125 ビットの乱数を作成するには、多くのオプションがあります。

シンプルで迅速な解決策(ただし、上に投稿したライブラリでは明らかに利用できません-GMPで可能かどうかはわかりません)はrand() * 0x1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF、正しい表記で a を実行することです。

上記のライブラリのスコープ内の方法は、残念ながらかなり遅いですが、125 個の単一ビット ("0" または "1" をランダムに) を描画し、"1" を描画した場合は増加する 2 のべき乗を追加します。ここにいくつかの(テストされていない)コードがあります:

BigInteger summand, number125bit;
summand = 1;

srand(systemtime_or_any_other_number);
for (int i=0; i<125; i++)
{
    if (rand() && 1)
    {
         number125bit += summand;
    }
    summand = summand << 1;
}
于 2012-07-24T06:17:35.040 に答える