0

我用过这个库。我必须对 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);

它给了我n2is0而不是34084860461056. 为什么会这样?

4

1 回答 1

4

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

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

int main() {

    mpz_class n2 = 0x1F;

    n2 <<= 40;

    cout << n2 << endl;

    return 0;
}
于 2012-07-26T05:57:37.830 回答