我有一个类型为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;
}