BigUnsigned integer (C++)

BigUnsigned integer (C++)

本文关键字:C++ integer BigUnsigned      更新时间:2023-10-16

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

它给出了n20而不是34084860461056。为什么会发生这种情况?

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

#include <iostream>
#include <gmpxx.h>
using namespace std;
int main() {
    mpz_class n2 = 0x1F;
    n2 <<= 40;
    cout << n2 << endl;
    return 0;
}