[英]Why is there BigInteger(String) but no BigInteger(long)?
[英]Why doesn't java use long[] in BigInteger's mag field?
我相信 64 位 JVM long[] 比 int[] 更有效,并且可以显着加快 RSA 操作。
long[]进位是个问题,但是我们可以用一些native方法强制long为unsigned,比如long z = u64add(x, y, cr)
,这里cr
是一个boolean[]
,可以代替long z = x + y
的。
BigInteger
支持multiply()
,而不仅仅是add()
。 由于multiply()
是更昂贵的操作,它的速度对于算法来说也是最重要的。
将两个 64 位整数相乘得到 128 位结果。 Java 中没有 128 位的 integer 类型,所以得到正确的结果不仅仅是“运算并移动一些位”。 您必须将这两个数字分成 4 个 32 位的部分,将它们相乘,然后合成结果。 或者添加一个 JVM 内在函数,以便可以使用本机 128 位操作。 不是做不到,更多的是成本效益的事情。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.