Java 的 BigInteger 实现

Java's BigInteger implementation

我是新来的所以请原谅我的菜鸟错误。我目前正在做我的一个小项目,该项目让我处理长度在四万及以上的数字。

我目前正在使用 BigInteger 来处理这些值,我需要执行速度更快的东西。我读过 BigInteger 在它的实现中使用了一个整数数组,我需要知道的是 BigInteger 是否使用这个数组中的每个索引来表示每个小数点,如 1 - 9,或者它是否使用更有效的东西.

我问这个是因为我已经想到了一个使用位操作的实现,这使得它在内存和处理方面更高效。

所以最后一个问题是 - BigInteger 是否已经足够高效,我应该只依赖它吗?最好知道这一点,而不是不必要地进行测试,这会花费很多时间。

谢谢。

至少对于 Oracle 的 Java 8 和 OpenJDK 8,它不会为每个 int 存储一位小数。它在 int[] 中每 32 位 int 存储完整的 32 位部分,可以用 its source code.

看到

位运算对它来说很快,因为它是一个符号幅度值,并且幅度按照您的预期打包存储,只需确保您使用 the relevant BigInteger bitwise methods 而不是实现自己的。

如果您仍然需要更快的速度,请尝试 GMP,但请注意它使用 LGPL 或 GPL 许可证。在 Java.

之外使用它也会更好