¿Cuál es la mejor manera de representar números arbitrariamente grandes en c?
-
03-07-2019 - |
Pregunta
Estoy trabajando en un proyecto que me obliga a trabajar con números más grandes que el tipo de datos numérico más grande en c. Estaba pensando en usar estructuras con campos de bits para representar esto, pero ya huele mal. ¿Alguien tiene algún consejo? (No busco una biblioteca, es más un proceso de pensamiento para ir detrás de hacer algo como esto).
Solución
Le sugiero que primero revise la biblioteca GNU MP Bignum.
Si la licencia es un problema, tiene que hacer su propio rollo. Mi primera opción para el tipo de datos sería una simple matriz de caracteres sin firmar junto con algunos datos adicionales para indicar qué tan grande es esa matriz.
Algo como esto:
typedef struct
{
unsigned char * NumberData;
size_t AllocatedSize;
} MyBigNum;
Debería ser suficiente.
Otros consejos
La Biblioteca de GNU MP Bignum sería mi primera opción.