He estado buscando por un buen tiempo, y no he encontrado casi nada sobre cómo BigInteger
realmente tiene sus números. ¿Son una variedad de caracteres? ¿Algo más? ¿Y cómo se convierten los datos a/desde BigInteger
?¿Cómo almacena BigInteger sus datos?
Por lo que he encontrado, supongo que todas las clases de precisión arbitrarias, como BigInteger
y BigDecimal
, contienen datos como una matriz de caracteres. ¿Es así como realmente funciona? ¿O es solo una suposición de la gente?
Pregunto porque he estado trabajando en mi propia implementación de algo como BigInteger
, pero no puedo encontrar la forma de mantener números mayores que Long.MAX_VALUE
(no recuerdo el número real).
Gracias de antemano.
Recuerde que una implementación es libre de hacer lo que quiera, siempre y cuando se mantenga el contrato 'BigInteger' del JDK. Puede revisar la fuente completa del Sun JDK si lo intenta con la intensidad suficiente: Oracle ha hecho que sea más difícil de lo que solía ser, pero aún es posible; [comenzar aquí] (http://java.sun.com/j2se/1.5.0/source_license.html). Puede navegar por la versión de OpenJDK [aquí] (http://hg.openjdk.java.net/jdk6/jdk6-gate/jdk/file/tip/src/share/classes/java/math/BigInteger.java) (it también usa 'int []'). –