繁体   English   中英

使用C ++ Boost库进行按位运算

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM