Quel est le meilleur moyen de représenter des nombres arbitrairement grands en c?
-
03-07-2019 - |
Question
Je travaille sur un projet qui nécessite de travailler avec des nombres supérieurs au type de données numérique le plus grand de c. Je pensais utiliser des structures avec des champs de bits pour représenter cela, mais ça sent déjà mauvais. Quelqu'un a des conseils? (Ne cherchez pas de bibliothèque, mais plutôt un processus de réflexion pour faire quelque chose comme ça.)
La solution
Je suggère de commencer par consulter la bibliothèque GNU MP Bignum.
Si l’octroi de licences pose un problème, vous devez procéder vous-même. Mon premier choix pour le type de données serait un simple tableau de caractères non signés avec quelques données supplémentaires pour indiquer la taille de ce tableau.
Quelque chose comme ça:
typedef struct
{
unsigned char * NumberData;
size_t AllocatedSize;
} MyBigNum;
Devrait être suffisant.
Autres conseils
La bibliothèque Bignum de GNU MP serait mon premier choix.