【发布时间】:2017-03-16 17:26:11
【问题描述】:
我有一个二进制序列。这个序列表示一个任意精度的整数,但就计算机而言,它只是一个二进制序列。我正在使用多精度库在 C++ 中工作。我只知道如何将 values 分配给任意精度数据类型:
mp::cpp_int A = 51684861532215151;
如何获取二进制序列并将其直接分配给数据类型 mp::cpp_int?我意识到我可以遍历每一位并在我碰到 1 的地方添加 2^bit,但我试图避免这样做。
回复:
Galik:我的编译器(Visual Studio 2013)出于某种原因不喜欢这样。
mp::cpp_int A = 0b0010011;
它在第一个 0 之后一直把红色波浪形。
当然,提高多精度。
【问题讨论】:
-
二进制序列是如何存储的? (它是存储小端还是大端?)
-
您使用的是哪个“多精度库”? (哦,你能不能edit你的问题提供这些问题的答案,而不是在 cmets 中回答。)
-
相当明显的改进是将二进制序列解释为
uint64_t的序列。这不仅效率提高了 64 倍,而且还节省了位移。在一个稍微相关的说明中,我假设没有迹象。您可能需要弄清楚这对您的二进制序列是如何工作的。 -
您是否尝试过使用二进制文字
mp::cpp_int A = 0b00110010111001010010010101010?
标签: c++ arbitrary-precision multiprecision