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