【发布时间】:2020-04-26 03:32:51
【问题描述】:
我是 Boost 新手,正在尝试使用它的多精度库来乘以非常大的输入:
mp::uint1024_t my_1024_bit_int1 = 0b00100101101000100010010...010101;
mp::uint1024_t my_1024_bit_int2 = 0b0010101001000101000010100000001001...01010111; // bigger in practice
mp::uint1024_t my_1024_bit_result = my_1024_bit_int2*my_1024_bit_int1;
我需要能够将结果保存为二进制形式的字符串。我试图访问整数中“肢体”的数量:
int limbs = my_1024_bit_result.backend.limbs();
然后遍历每个肢体并使用bitset函数将每个肢体转换为二进制字符串,但它不起作用。
我还能如何做到这一点?
【问题讨论】:
-
我相信你想多了。假设您没有使用多精度库——您将如何生成字符串?除了
int类型将被替换为cpp_int之外,这不是完全相同的代码吗? -
旁注:你确定你的前 2 行适用于 > 64 位的数字吗?
-
@MarcGlisse 我想它们确实应该是字符串初始化的,但是它们的构造函数不支持
0b格式
标签: c++ boost boost-multiprecision