Java';s大整数实现

Java';s大整数实现,java,biginteger,Java,Biginteger,我是新来的,请原谅我的错误。我目前正在做我的一个小项目,看到我在处理长度在四万以上的数字 我目前正在使用BigInteger来处理这些值,我需要一些执行速度更快的东西。我已经读到BigInteger在它的实现中使用了一个整数数组,我需要知道的是BigInteger是使用这个数组中的每个索引来表示每个小数点,如1-9,还是使用了更有效的方法 我问这个问题是因为我已经想到了一个使用位运算的实现,这使得它更高效,内存和处理更明智 最后一个问题是,BigInteger是否已经足够有效,我是否应该依赖它?

我是新来的,请原谅我的错误。我目前正在做我的一个小项目,看到我在处理长度在四万以上的数字

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

我问这个问题是因为我已经想到了一个使用位运算的实现,这使得它更高效,内存和处理更明智

最后一个问题是,BigInteger是否已经足够有效,我是否应该依赖它?最好了解这一点,而不是不必要地对其进行测试,这将花费大量时间


谢谢。

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

位操作对它来说很快,因为它是一个符号大小值,并且大小是按预期打包存储的,请确保使用而不是实现自己的大小


如果您仍然需要更高的速度,请尝试类似的方法,但请注意它使用LGPL或GPL许可证。最好在Java之外使用它。

很难说它是否足够有效。。。您可以编写基准并进行比较。你说过“我需要性能更快的东西”——这是你的猜测,还是你已经证明了
biginger
对你来说不够有效?(我强烈怀疑您可以轻松想象的
biginger
的任何优化都已经存在。不过,您可以自己检查实现,例如,现在有太多应用程序使用
biginger
,我怀疑哪怕是很小的一部分都有潜在的瓶颈,因为这要感谢大家的响应。而且不,我没有做任何假设。我只是想知道。当然,我知道BigInteger和它们一样精致和复杂,但当我读到一些关于数组的内容时,它让我想起了在找到BigInteger类之前我做过的一个旧的superint类。我在做同一个项目,我直接开始制作我的拥有最小的优势,但速度非常慢,我想出了一个改进,但那时我也发现了BigInteger。这就是我的好奇心所在。在我有限的测试中,我没有发现任何纯Java big int实现比Java 8+BigInteger快,包括声称比它快的第三方类。Java 8+BigIntegerger采用了比O(n^2)更好的高级算法,在足够大的操作数上进行乘法和除法运算。谢谢你们,我想我只关注BigInteger。