x86-64 ¿Representación de enteros grandes?
¿Cómo representan las bibliotecas de grandes enteros nativos de alto rendimiento en x86-64 un entero grande en la memoria? (¿o varía? ¿Hay una forma más común?)
De manera ingenua, estaba pensando en almacenarlos como cadenas de números terminados en 0 en la base 264.
Por ejemplo supongamosX
está en la memoria como:
[8 bytes] Dn
.
.
[8 bytes] D2
[8 bytes] D1
[8 bytes] D0
[8 bytes] 0
Sea B = 264
Entonces
X = Dn * Bn + ... + D2 * B2 + D1 * B1 + D0
La cadena vacía (es decir, 8 bytes de cero) significa cero.
¿Es esta una manera razonable? ¿Cuáles son los pros y los contras de esta manera? ¿Hay alguna manera mejor?
¿Cómo manejarías la firmeza? ¿Funciona el complemento de 2 con este valor de longitud variable?
(Encontró esto:http://gmplib.org/manual/Integer-Internals.html ¿Cuál es una extremidad?