Java 的 BigInteger 实现

标签 java biginteger

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

我目前正在使用 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 之外使用它也会更好。

关于Java 的 BigInteger 实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52704490/

相关文章:

java - 如何生成介于 1 和任何值之间的随机 BigInteger 数字?

reverse - Java 的 BigInteger 符号大小如何工作

java - Vaadin 中带 slider 的水平按钮栏

java - 为什么我不能在 SAXParser 中打开这个 XML?

java - 堆栈实现中的空指针异常

performance - 乘以 2 或将数字加到自身上哪个更好?大数

java - 如何?在 Java 中绘制自定义复合对象

java - 如何在 Eclipse 中从 MoDisco java 模型生成 java 代码?

objective-c - 使用 Objective C 将大字节数组转换为数字字符串

Haskell Int64 不一致?