Je travaille sur un projet qui me demande de travailler avec des nombres plus grands que le plus grand type de données numériques de c. Je pensais utiliser des structures avec des champs de bits pour représenter cela, mais ça sent déjà mauvais. Quelqu'un at-il des conseils? (Ne pas chercher une bibliothèque, plus d'un processus de réflexion pour aller faire quelque chose comme ça.)Quelle est la meilleure façon de représenter arbitrairement de grands nombres dans c?
5
A
Répondre
5
Je suggère de consulter d'abord la bibliothèque GNU MP Bignum.
Si la licence est un problème, vous devez rouler la vôtre. 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 ceci:
typedef struct
{
unsigned char * NumberData;
size_t AllocatedSize;
} MyBigNum;
devrait être suffisant.
9
The GNU MP Bignum Library serait mon premier choix.
Je ne suis pas d'accord qu'il s'agit d'une copie exacte de la référence. Je ne cherche pas de bibliothèque (j'aurais dû le spécifier), mais la meilleure pratique pour les grandes données numériques. Dans ce cas, c'est sur Linux, mais cela devrait être indépendant de la plate-forme. – sdellysse