我使用过this library。 我必须对BigUnsigned数字执行位操作。
我的代码是
#include "BigIntegerLibrary.h"
BigUnsigned n1;
for (int i = 0; i < 100;i++)
{
if (i < 5)
{
n1.setBit(i,true);
}
else
{
n1.setBit(i,false);
}
}
BigUnsigned n2;
n2 = n1;
n2.bitShiftLeft(n2 , 40);
它为n2
提供0
而不是34084860461056
。为什么会这样?
答案 0 :(得分:4)
它可能与库的实现有关。我强烈建议您使用GMP执行此任务。我的解决方案看起来像这样:
#include <iostream>
#include <gmpxx.h>
using namespace std;
int main() {
mpz_class n2 = 0x1F;
n2 <<= 40;
cout << n2 << endl;
return 0;
}