BigUnsigned整数(C ++)

时间:2012-07-26 05:45:26

标签: c++ biginteger

我使用过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。为什么会这样?

1 个答案:

答案 0 :(得分:4)

它可能与库的实现有关。我强烈建议您使用GMP执行此任务。我的解决方案看起来像这样:

#include <iostream>
#include <gmpxx.h>
using namespace std;

int main() {

    mpz_class n2 = 0x1F;

    n2 <<= 40;

    cout << n2 << endl;

    return 0;
}