[Débutant] manipulation de grand nombre
Bonjour,
voici mon probleme, je desire manipuler des nombres de grandes taille, en revanche, je n'arrive a depasser les nombres composés de 10 chiffre.
pour voir a peu pres jusqu'ou je pouvais arrivé j'ai utiliser ca:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14
|
#include <stdio.h>
#include <math.h>
int main()
{
int a;
unsigned long b=0;
for (a=1;a<35;a++)
{
b = pow (2,a);
printf("%ld --- %u\n",a,b);
}
return 0;
} |
la derniere ligne me donne:
31 --- 2147483648
en toute logique je devrais arrivé a 32 --- 4294967296.
pourquoi j'obtient 32 --- 0 a la place ?
et comment depasser ce nombre ?
pour info j'utilise dev c++
merci d'avance !
Re: [Débutant] manipulation de grand nombre
Citation:
Envoyé par yonderboy
la derniere ligne me donne:
31 --- 2147483648
en toute logique je devrais arrivé a 32 --- 4294967296.
pourquoi j'obtient 32 --- 0 a la place ?
et comment depasser ce nombre ?
La plage minimale garantie pour un long est 0 .. 4294967295 (c'est a dire 2^32 - 1). Dans ton cas tu cherches a calculer 2^32 qui est en dehors de la plage garantie.
Ce qui se passe c'est que tu reboucles et tu reviens donc a 0.
Je rappelle qu'un nombre non signe de n bits permets de represente 2^n valeurs allant de 0 a 2^n - 1