如何找到硬件算术完全支持的最大整数?

And*_*cia 3 c++ math arbitrary-precision

我正在实现一个必须支持对整数进行任意精度操作的BigInt类.

引自S.Skiena的"算法设计手册":

我应该做什么基础 [编者注:任意精度] 算术? - 以十进制形式实现自己的高精度算术包可能是最简单的,因此将每个整数表示为一个基数为10的数字.但是,使用更高的基数更有效,理想情况下等于硬件算法完全支持的最大整数的平方根.

如何找到硬件算法完全支持的最大整数?如果我理解正确,作为我的机器是基于x64的PC,支持的最大整数应该是2 ^ 64(http://en.wikipedia.org/wiki/X86-64-架构特性:64位整数能力),所以我应该使用base 2 ^ 32,但是在c ++中有一种方法可以通过编程方式获得这个大小,所以我可以输入我的base_type吗?

mpu*_*mpu 5

你可能正在寻找std::uintmax_tstd::intmax_t.

  • @AndreaCasaccia - INTMAX_MAX不会告诉您最大的硬件类型是什么.它告诉你最大的整数类型是什么.它通常会很长,但没有要求长期支持硬件; 它可以通过仿真来完成. (2认同)