我試圖找出與
Java 7 x64中的BigIntegers相關的以下問題.我試圖計算一個極高功率的數字.代碼如下,然后是問題描述.
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限制(無論如何運行VM參數-Xmx1024M -Xms1024M都沒有效果).
在互聯網上尋找答案之后,我開始懷疑我在BigInteger或String中遇到限制,這些限制與這些類型用于內部數據存儲的數組的最大大小(Integer.MAX_VALUE)有關.如果問題出現在String中,我認為可以擴展BigInteger并編寫一個一次噴出幾個字符的打印方法,直到整個BigInteger被打印出來,但我寧愿懷疑問題出在其他地方.
感謝您抽出寶貴時間閱讀我的問題.