| |
Programmation C |
|
Représentation des nombres sous forme binaire
sur un octet :
Sous forme binaire, les symboles 0 et 1 permettent de représenter sur 8 positions, 256
combinaisons différentes. On peut donc coder en binaire les nombres allant de 0 à 255.
Pour représenter des nombres entiers positifs et négatifs, on partage en 2
moitiés l'ensemble des combinaisons binaires disponibles : on utilise la
première moitié pour les nombres négatifs, et l'autre pour les nombres positifs.
Les 128 premières combinaisons correspondent aux nombres de 0 à 127.
Les 128 dernières combinaisons correspondent aux nombres de -128 à -1.
Sur 8 bits, donc, le nombre 3 ressemble à ceci :
00000011
(codage du nombre 3 sous forme binaire)
Le nombre (-3) est obtenu en transformant cette suite binaire par
le
complément à 2.
Les compléments à 1 et à 2 :
Le complément à 1 est obtenu par le remplacement de tous les bit valant
0
par
1,
et
tous
les
bits valant 1 par 0.
Le complément à 2, est obtenu par l'ajout de 1 au complément à 1. (0+1=1 et 1+1=0)
Exemple :
| 00000011
|
le nombre 3 sur 8 bits
|
| 11111100
|
complément à
1 du nombre 3
|
| 11111101
|
complément à
2 du nombre 3
|
Si on regarde bien, 11111101 correspond effectivement au nombre -3 dans le
tableau des
correspondances :
|
BINAIRE
|
VALEUR
|
|
|
|
00000000
|
0
|
|
00000001
|
1
|
|
00000010
|
2
|
|
00000011
|
3
|
|
00000100
|
4
|
|
...
|
...
|
|
01111011
|
123
|
|
01111100
|
124
|
|
01111101
|
125
|
|
00000001
|
126 |
|
01111111
|
127
|
|
|
|
10000000
|
-128
|
|
10000001
|
-126
|
|
10000010
|
-125
|
|
...
|
... |
|
11111100
|
-4 |
|
11111101
|
-3
|
|
11111110
|
-2
|
|
11111111
|
-1
|
Les types short, int, et long :
Il permettent
le stockage de nombres. Ces types de données se différencient par
l'occupation en mémoire nécessaire.
Le type
short occupe 2 octets (soit 16 bits).
Le type
int
occupe 2 ou 4 octets selon les machines (soit 16 ou 32 bits).
Le type
long
occupe 4 octets (soit 32 bits).
Sur 2 octets, on peut former 65 536 (256x256) combinaisons différentes, donc
codifier les nombres signés allant de -32 768 à 37 767, et les nombres non
signés allant de 0 à 65535.
Sur 4 octets, on peut former 4 294 967 296 (256^4) combinaisons différentes,
donc codifier les nombres signés allant de -2 147 843 648 à 2 147 843 647, et
les nombres non signés allant de 0 à 4 294 967 295.
Voici le nombre 2010 codifié sur 2 octets (short) et 4 octets (long) :
|
2 octets |
|
00000111
|
11011010 |
|
4 octets |
00000000 |
00000000 |
00000111
|
11011010 |
|