cs_darktiger
Messages postés6Date d'inscriptionjeudi 20 février 2003StatutMembreDernière intervention20 juillet 2003
-
21 mai 2003 à 18:13
cs_bouba
Messages postés518Date d'inscriptiondimanche 2 décembre 2001StatutMembreDernière intervention10 novembre 2007
-
22 mai 2003 à 07:12
question de debutant :
Quelle est la difference entre une variable unsigned et une variable signed ?(mis à part le fait qu'elles peuvent etre ou non negatives). A quoi cela sert il ?
BruNews
Messages postés21040Date d'inscriptionjeudi 23 janvier 2003StatutModérateurDernière intervention21 août 2019 21 mai 2003 à 18:21
A faire des calculs, cette blague.
la signed est consideree negative quand son bit le + haut est positonne. La difference se situera surtout au noiveau de la division.
BruNews, ciao...
cs_bouba
Messages postés518Date d'inscriptiondimanche 2 décembre 2001StatutMembreDernière intervention10 novembre 20073 21 mai 2003 à 18:48
Salut, je vais t'expliquer,
quand tu déclare un
int i;
La variable i contient 32bits soit 1bit de signe et 31bits de données, c'est a dire que le premier bit indique si le nombre est positif ou négati et les 33 autres la grandeur de celui-ci. On peut donc stocker des valeurs allant de 2^31 a -2^31.
Le unsigned int est identique sauf qu'il indique qu'il n'y a pas de bit de signe, (le nombre est positif), il y a donc 32 bits de données. on peut donc y stocker des valeurs allant de 0 à 2^32.
Voilà, en fait on utilise les unsigned pour faire des calculs non signés et allant de 0 à 2^32, les signés font aussi des calculs dans le négatif mais sockent des valeurs allant de -2^31 à 2^31.
Attention, c'est valeurs dépendent du compilateur et de la machine (16 ou 32 bits et aujourd'hui aussi 64bits). Pour connaitre ces limites tu peux consulter le fichier limits.h ou climits.h ou climits (je sais plus si y'a un e ou pas a limit :-) ).
Voila, j'espère que tu as bien compris l'interêt des unsigned.
Allé, bonne prog.
A+.
Bouba
cs_darktiger
Messages postés6Date d'inscriptionjeudi 20 février 2003StatutMembreDernière intervention20 juillet 2003 21 mai 2003 à 19:49
-------------------------------
Réponse au message :
-------------------------------
> Salut, je vais t'expliquer,
> quand tu déclare un
> int i;
> La variable i contient 32bits soit 1bit de signe et 31bits de données, c'est a dire que le premier bit indique si le nombre est positif ou négati et les 33 autres la grandeur de celui-ci. On peut donc stocker des valeurs allant de 2^31 a -2^31.
> Le unsigned int est identique sauf qu'il indique qu'il n'y a pas de bit de signe, (le nombre est positif), il y a donc 32 bits de données. on peut donc y stocker des valeurs allant de 0 à 2^32.
> Voilà, en fait on utilise les unsigned pour faire des calculs non signés et allant de 0 à 2^32, les signés font aussi des calculs dans le négatif mais sockent des valeurs allant de -2^31 à 2^31.
> Attention, c'est valeurs dépendent du compilateur et de la machine (16 ou 32 bits et aujourd'hui aussi 64bits). Pour connaitre ces limites tu peux consulter le fichier limits.h ou climits.h ou climits (je sais plus si y'a un e ou pas a limit :-) ).
> Voila, j'espère que tu as bien compris l'interêt des unsigned.
> Allé, bonne prog.
> A+.
> Bouba
>
>
> Pourquoi 2^31? (pourquoi 2???)
Merci de ces explications ...
cs_bouba
Messages postés518Date d'inscriptiondimanche 2 décembre 2001StatutMembreDernière intervention10 novembre 20073 22 mai 2003 à 07:12
2^31 car 32 bits (1bits de signes et 31 de données), c'est deux car en info les états sont 0 ou 1, on effectue tout en base 2 (eh oui, c'est la seul solution q'on ait trouvé étant compatible avec les cartes électronique d'un PC, les russes on tentés en base 3 je crois mais ce sont plantés :-) ). Voila, c'est tout bête.
++
Bouba