算法找到最有效的基数来存储大整数

时间:2013-01-19 18:07:03

标签: algorithm math storage bignum radix

非常大的整数通常是stored as variable-length arrays of digits在内存中,而不是像大多数原始的'int'或'long'类型那样简单的二进制表示,如在Java或C中。考虑到这一点,我很想知道可以计算的算法:

  1. 一个整数必须达到的计数才能将它作为BigInteger(或等效的任意精度算术结构)存储到整数位数的给定基数之前变得更有效率; < / p>

  2. 哪个基数最有效存储此大整数的数字。

  3. 我提到'效率';通过这个,我的意思是我主要关注这样一个BigInteger消耗的 space 的数量,尽管我也有兴趣听到有关处理速度或时间复杂度的任何评论。

2 个答案:

答案 0 :(得分:0)

如果以原始二进制格式存储,则整数应占用最小空间(除非它可能是一个小整数,而数据类型对于它来说太宽 - 要在128位long long中存储1)。以不同方式存储不会保存任何内存,而是用于使这些整数的工作更容易。

如果逐字节,则转换为256'ecimal基数 - 256个可能的值,与字节可以保持的一样多。

答案 1 :(得分:0)

  1. BigInt永远不会比硬件直接支持的整数类型之一更有效。如果您可以直接使用支持的内容,请使用它。
  2. 硬件最有效地支持什么,可能是2的幂,或者通常是等价的二进制。