我正在尝试解决与Java 7 x64中BigIntegers相关的问题。我试图计算一个极高次幂的数字。下面是代码,紧接着是问题描述。
我在打印操作的结果时遇到了问题。当这段代码执行时,它会打印出消息,但不会打印出
为了分离问题,我开始计算2的幂而不是该行注释中所需的计算。在我测试过的两个系统上,
我在主机系统上没有接近内存限制,也不认为我接近虚拟机限制(无论如何,使用VM参数
在互联网上寻找答案后,我怀疑我正在击中
感谢您抽出时间阅读我的问题。
import java.math.BigInteger;
public class main {
public static void main(String[] args) {
// Demo calculation; Desired calculation: BigInteger("4096").pow(800*600)
BigInteger images = new BigInteger("2").pow(15544);
System.out.println(
"The number of possible 16 bpc color 800x600 images is: "
+ images.toString());
}
}
我在打印操作的结果时遇到了问题。当这段代码执行时,它会打印出消息,但不会打印出
images.toString()
的值。为了分离问题,我开始计算2的幂而不是该行注释中所需的计算。在我测试过的两个系统上,
2^15544
是触发问题的最小计算;2^15543
运行良好。我在主机系统上没有接近内存限制,也不认为我接近虚拟机限制(无论如何,使用VM参数
-Xmx1024M
-Xms1024M
没有效果)。在互联网上寻找答案后,我怀疑我正在击中
BigInteger
或String
中与最大数组大小(Integer.MAX_VALUE
)相关的限制。如果问题在于String
,我认为可以扩展BigInteger
并编写一个打印方法,以每次输出几个字符,直到整个BigInteger
被打印出来,但我更加怀疑问题出在其他地方。感谢您抽出时间阅读我的问题。