Imprimiendo BigIntegers muy grandes
Estoy tratando de resolver el siguiente problema relacionado con BigIntegers en Java 7 x64. Estoy tratando de calcular un número a una potencia extremadamente alta. El código está debajo, seguido de una descripción del problema.
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());
}
}
Tengo problemas para imprimir el resultado de esta operación. Cuando este código se ejecuta, imprime el mensaje pero no el valor deimages.toString()
.
Para aislar el problema, comencé a calcular potencias de dos en lugar del cálculo deseado que figura en el comentario de esa línea. En los dos sistemas que he probado esto,2^15544
es el cálculo más pequeño que desencadena el problema;2^15543
funciona bien.
No estoy ni cerca de alcanzar el límite de memoria en los sistemas host y no creo que esté ni siquiera cerca del límite de VM (al menos ejecutando con los argumentos de VM).-Xmx1024M
-Xms1024M
no tiene efecto).
Después de buscar en Internet buscando respuestas, he llegado a sospechar que estoy llegando a un límite en cualquiera de los dos.BigInteger
oString
relacionado con el tamaño máximo de una matriz (Integer.MAX_VALUE
) que esos tipos utilizan para el almacenamiento interno de datos. Si el problema está enString
Creo que sería posible ampliarBigInteger
y escriba un método de impresión que arroje unos cuantos caracteres a la vez hasta que todoBigInteger
Está impreso, pero más bien sospecho que el problema está en otra parte.
Gracias por tomarse el tiempo para leer mi pregunta.