gpt4 book ai didi

c++ - 使用 C++ boost 库的按位运算

转载 作者:行者123 更新时间:2023-11-28 01:44:59 35 4
gpt4 key购买 nike

我是 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。据推测,您不需要移动超过几亿位数。

关于c++ - 使用 C++ boost 库的按位运算,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45529016/

35 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com