与GMP纠缠

时间:2020-02-28 11:00:20

标签: c++ bit-manipulation gmp

我有一个类型为mpz_class的变量。我想以其二进制形式获取其最后n位数字。我通常可以通过使用位掩码并移动(1 << n)-1来实现此目的,但是GMP似乎没有简单的左移运算符。一种替代方法可能涉及get_str(2)来获取二进制表示形式的字符串版本,但是对于大量数字,我想这将是浪费的。

从类型mpz_class的变量中获取最后n位数字的最佳方法是什么?

我在https://gmplib.org/manual/Low_002dlevel-Functions.html中发现了mpn_lshift(),但对于一个简单的任务来说似乎过于复杂。如果有人可以向我提供一个如何与mpz_class一起使用的简单示例,将很有用。

我尝试了这段代码,由于<<

而无法编译
#include <iostream>
#include <gmpxx.h>

using namespace std;

int main()
{
    mpz_class a(5);
    cout << "a: " << a << endl;
    mpz_class b = (mpz_class(1) << a);
    cout << "b: " << b << endl;

    return 0;
}

0 个答案:

没有答案
相关问题