Java的BigInteger实现

时间:2018-10-08 14:28:56

标签: java biginteger

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

我目前正在使用BigInteger来处理这些值,并且我需要性能更快的东西。我已经读到BigInteger在其实现中使用整数数组,我需要知道的是BigInteger是使用该数组中的每个索引来表示每个小数点(例如1-9),还是使用更高效的函数?

之所以这样问,是因为我已经有了一个使用位操作的实现,这使其在效率,内存和处理方面更加高效。

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

谢谢。

1 个答案:

答案 0 :(得分:0)

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

位操作速度很快,因为它是一个符号幅度值,并且幅度按照您期望的方式打包存储,只需确保使用the relevant BigInteger bitwise methods而不是自己实现即可。

如果您仍然需要更高的速度,请尝试使用GMP之类的方法,尽管要知道它使用LGPL或GPL许可证。最好在Java之外使用它。