2010-08-08 11 views
3

Possible en double:
“BigInt” in C?Plus de 4 294 967 296 en C?

Salut! Je suis le calcul des nombres de Fibonacci en C jusqu'à 46 en utilisant un unsigned int, mais je ne peux pas calculer F (47) parce qu'il est long. Donc, y a-t-il un moyen d'obtenir des nombres supérieurs à 2^32 en C?
NB: J'utilise un processeur 32 bits.

+0

OK, mec merci! – seriousdev

Répondre

11

(non signé) long long, mais il est également limité (à 2^64). Si cela ne suffit pas, vous devez rechercher une bibliothèque BigInt .

+0

Bien sûr, sur x86 et d'autres architectures, vous pouvez le pousser à 128 bits avec un '__uint128_t' ... – haneefmubarak

0

vous devez implémenter votre propre type de données qui est en mesure de tenir grand nombre ou utiliser une bibliothèque telle que this one.

2
#include <stdint.h> 

uint64_t my64bit; 
1

Vous pouvez essayer d'utiliser (vérifier l'implémentation C pour le support) entiers non signés 64 bits, ou tout simplement utiliser un paquet BigNum comme GMP.

Dans le passé, j'ai créé moi-même des bibliothèques BigNum à des fins diverses, mais GMP souffle mes maigres efforts hors de l'eau.

1

J'aime la réponse donnée par l'utilisateur R .. pour cette question here pour opérer sur bigints. Bien sûr, vous devez implémenter votre propre fonction d'ajout si vous voulez l'étendre à de très grands nombres. Il explique les étapes très clairement.