как печатать 128-битное целое число без знака - PullRequest
0 голосов
/ 17 февраля 2020

Я хочу напечатать целочисленное значение, которое конвертируется из шестнадцатеричного значения, но я могу вывести только шестнадцатеричное значение.

#include <iostream>
#include <boost/multiprecision/cpp_int.hpp>
using namespace boost::multiprecision;

    cpp_int          dsa("0xFFFFFFFFFFFFFFFF");
    cpp_int          daa("9223372036854775807");
    daa = ((daa * 64) + daa);
    cout << std::hex<<dsa <<std::showbase<< endl;
    cout <<dsa << endl;
    cout <<daa << endl;
    cout <<(int)daa << endl;
    cout <<(int128_t)daa << endl;

output

ffffffffffffffff
0xffffffffffffffff
0x207fffffffffffffbf
0x7fffffff
0x207fffffffffffffbf

Как вывести максимальное значение 128 бит тип целого числа?

1 Ответ

3 голосов
/ 17 февраля 2020

Вы должны использовать std::numeric_limits, чтобы получить максимальное значение, потому что это его цель. Ваша проблема с форматированием не зависит от вашего фактического вопроса.

#include <iostream>
#include <boost/multiprecision/cpp_int.hpp>
#include <limits>

int main()
{
    auto max = std::numeric_limits<boost::multiprecision::int128_t>::max();
    std::cout << max << std::endl;
}
...