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



非常大的整数通常作为可变长度的数字数组存储在内存中,而不是像Java或c中最原始的'int'或'long'类型那样直接的二进制表示。考虑到这一点,我很有兴趣知道可以计算的算法:

  1. ,一个整数必须达到多少count才能更有效地将其存储为BigInteger(或等效的任意精度算术结构),该整数的数字具有给定的基数;

  2. 哪个基数最有效地存储这个大整数的数字

我提到了"效率";我的意思是,我主要关心的是这样一个BigInteger将消耗的空间的数量,尽管我也有兴趣听到任何关于处理速度或时间复杂性的评论。

如果以原始二进制格式存储,整数应该消耗最少的空间(除非它可能是一个小整数并且数据类型对它来说太宽了-将1存储在128位long long中)。用不同的方式存储并不节省内存,而且使处理这类整数更容易。

如果一个字节一个字节,这将转换为256'进制基数- 256个可能的值,尽可能多的字节可以容纳

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

最新更新