-2

我有一个 c++ BigInteger 库。我必须从任何大随机数中创建一个精确为 125 位的 bigInteger。我需要对创建的 125 位数执行右移、左移、setbit、getbit、NOT、OR、XOR 和 AND 操作。我需要使用哪个库来执行上述操作?谁能帮帮我吗。

4

1 回答 1

0

谷歌搜索这些术语big integer library给了我C++ Big Integer Library。从网站:

这个库强调易用性和实现的清晰度,而不是速度;一些用户会更喜欢 GMP,它更快。

编辑:

要创建一个 125 位的随机数,有很多选择。

一个简单而快速的解决方案(但显然在我上面发布的库中不可用 - 我不知道是否可以使用 GMP)将以rand() * 0x1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF正确的符号进行。

不幸的是,上述库范围内的一个方法相当慢,它是绘制 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 回答