Печать очень больших BigIntegers

Я пытаюсь выяснить следующую проблему, связанную с BigIntegers в Java 7 x64. Я пытаюсь вычислить число до чрезвычайно высокой степени. Ниже приведен код с описанием проблемы.

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^15544 наименьшее вычисление, которое вызывает проблему;2^15543 работает отлично.

Я не близок к достижению предела памяти в хост-системах, и я не верю, что я даже близок к пределу виртуальной машины (во всяком случае, с аргументами виртуальной машины).-Xmx1024M -Xms1024M не имеет никакого эффекта).

Покопавшись в интернете в поисках ответов, я начал подозревать, что я достигаю предела либо вBigInteger или жеString относится к максимальному размеру массива (Integer.MAX_VALUE) которые эти типы используют для внутреннего хранения данных. Если проблема вString Я думаю, что было бы возможно продлитьBigInteger и напишите метод печати, который выбрасывает несколько символов за раз, пока весьBigInteger печатается, но я скорее подозреваю, что проблема кроется в другом месте.

Спасибо, что нашли время, чтобы прочитать мой вопрос.

Ответы на вопрос(1)

Ваш ответ на вопрос