2009-03-06 11 views
5

Estoy trabajando en un proyecto que requiere que trabaje con números mayores que el tipo de datos numéricos 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 busca una biblioteca, más de un proceso de pensamiento para ir detrás de hacer algo como esto.)¿Cuál es la mejor manera de representar arbitrariamente números grandes en c?

+0

No estoy de acuerdo en que este sea un duplicado exacto de la referencia. No estoy buscando una biblioteca (debería haber especificado eso), sino la mejor práctica de grandes datos numéricos. En este caso, está en Linux, pero esto debe ser independiente de la plataforma. – sdellysse

Respuesta

5

Le sugiero que compruebe primero la biblioteca GNU MP Bignum.

Si el licenciamiento es un problema, tiene que hacer el suyo propio. Mi primera opción para el tipo de datos sería una simple matriz de caracteres sin signo 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.

Cuestiones relacionadas