Comment changer la taille max d'un int en C ?
Pip Iiic
Messages postés
48
Date d'inscription
Statut
Membre
Dernière intervention
-
KX Messages postés 16761 Date d'inscription Statut Modérateur Dernière intervention -
KX Messages postés 16761 Date d'inscription Statut Modérateur Dernière intervention -
Bonjour,
Je programme en C. Le problème étant que les valeurs utilisées dans mon programme sont trop grandes pour utiliser un int, voire plus.
Voilà pourquoi je souhaiterais augmenter la taille maximale d'un int.
Voudriez-vous bien m'expliquer les étapes à suivre ?
Cordialement, Pip.
Je programme en C. Le problème étant que les valeurs utilisées dans mon programme sont trop grandes pour utiliser un int, voire plus.
Voilà pourquoi je souhaiterais augmenter la taille maximale d'un int.
Voudriez-vous bien m'expliquer les étapes à suivre ?
Cordialement, Pip.
A voir également:
- Comment changer la taille max d'un int en C ?
- Changer dns - Guide
- Comment réduire la taille d'un fichier - Guide
- Changer clavier qwerty en azerty - Guide
- Comment reduire la taille d'une photo - Guide
- Changer carte graphique - Guide
7 réponses
Bonjour,
Tu ne peux pas modifier la taille du type int.
Tu ne pourra pas faire de calculs facilement avec des types plus grands que des long double. Il te faudra mettre au point un alogorithme qui fait les calculs par blocs (par petit bout de mémoire). Tu peux éventuellement faire une structure.
Sinon tu peux utiliser des bibliothèques spécialisées dans le traitement des grands nombres (des bibliothèques de maths). Je pense notamment à GMP qui t'aidera peut-être.
Tu ne peux pas modifier la taille du type int.
Tu ne pourra pas faire de calculs facilement avec des types plus grands que des long double. Il te faudra mettre au point un alogorithme qui fait les calculs par blocs (par petit bout de mémoire). Tu peux éventuellement faire une structure.
Sinon tu peux utiliser des bibliothèques spécialisées dans le traitement des grands nombres (des bibliothèques de maths). Je pense notamment à GMP qui t'aidera peut-être.
Bonjour
Le int fait entre 16 et 32 bits
Tu as donc aussi
le "long" entre 32 et 64 bits
le "long long" qui lui fait 64 bits
Svp
Le int fait entre 16 et 32 bits
Tu as donc aussi
le "long" entre 32 et 64 bits
le "long long" qui lui fait 64 bits
Svp
Même avec un long double, voire plus, cela ne suffit pas. Je ne peux pas changer la taille maximale d'un int ?
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
10^100'000'000
remarque tout de même que ce nombre est bien plus énorme que toute mémoire décente d'un ordinateur (qui vaut environ 2 ou 4 * 10^9 octets.... )
même en compressant ton nombre, je vois vraiment mal comment tu arriveras à stocker la valeur exacte. Même en regroupant toutes les RAM et les DD de la terre, je ne suis pas sûr que tu y arrives, sans compter le temps de parcourir ce nombre par le processeur.
en conséquence, il est illusoire, même avec une bibliothèque externe, de manipuler des nombres entiers exacts comme ceci.
C'est bien pour cela que la recherche de gros nombres premiers est difficile, et sapparent plus à un travail de mathématicien qu'à de "juste de la prorgammation et hop on met dans la machine".
même en compressant ton nombre, je vois vraiment mal comment tu arriveras à stocker la valeur exacte. Même en regroupant toutes les RAM et les DD de la terre, je ne suis pas sûr que tu y arrives, sans compter le temps de parcourir ce nombre par le processeur.
en conséquence, il est illusoire, même avec une bibliothèque externe, de manipuler des nombres entiers exacts comme ceci.
C'est bien pour cela que la recherche de gros nombres premiers est difficile, et sapparent plus à un travail de mathématicien qu'à de "juste de la prorgammation et hop on met dans la machine".
J'ai suivi le tutoriel :
https://openclassrooms.com/fr/courses
Sous Ubuntu avec la commande sudo apt-get install libgmp3-dev
https://packages.debian.org/squeeze/libgmp3-dev
J'ai ensuite placé les fichiers dans les dossiers respectifs de Dev-cpp.
GMP est une bibliothèque qui utilise des grand nombres mpz_t et fournit toutes les méthodes de calcul que tu pourrais trouvées dans math.h, la réécriture ne devrait pas être trop compliquée...
Remarque : te limiter à des int est quand même radical, et pourquoi pas des short ^^
Avec les unsigned long long tu peux aller jusqu'à 18 446 744 073 709 551 615, c'est déja un début...