[英]Bitwise operation using c++ boost library
我是C ++ Boost库的新手。 我想对cpp_int
类型使用按位运算。 下面的代码工作正常。
#include <boost/multiprecision/cpp_int.hpp>
#include <iostream>
namespace mp = boost::multiprecision;
using boost::multiprecision::cpp_int;
using namespace std;
int main(){
cpp_int p = 2;
cout<<mp::pow(p, 1024)<<endl;
return 0;
}
但是,当我尝试从用户那里获取移位值时,在(p<<c)
的行中收到“操作符<<不匹配”错误。
#include <boost/multiprecision/cpp_int.hpp>
#include <iostream>
namespace mp = boost::multiprecision;
using boost::multiprecision::cpp_int;
using namespace std;
int main(){
cpp_int p = 2, c;
//cout<<mp::pow(p, 1024)<<endl;
cin>>c;
cout << (p<<c) << endl;
return 0;
}
仅当右侧是内置整数类型时,才在Boost Multiprecision中实现按位移位。 您可以在这里看到:
http://www.boost.org/doc/libs/1_64_0/boost/multiprecision/number.hpp
因此,您可以循环使用uint64_t
,每次最多移位UINT64_MAX
,并在执行过程中递减c
。 大概您不需要移动超过几千亿位的数字。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.