Pour aller plus loin
1. Les nombres négatifs
Un nombre signé par exemple sur 8 bits, contient un bit réservé pour le signe. C’est en tout cas ainsi qu’on vous le
présente pour plus de compréhension. Généralement c’est le bit de poids fort, le plus à gauche, qui sert pour le signe :
à 0 le nombre est positif, à 1 il est négatif. Par exemple 9 (10) devrait être représenté par 10001001 (2) . Cette
représentation pratique pour le lecteur ne l’est cependant absolument pas pour l’ordinateur. Additionnez 9 et 30, vous
obtenez 21.
En binaire, 30 équivaut à 00011110. Le binaire s’additionne comme le décimal : 1+1=10 donc retenue de 1, et ainsi de
suite :
00011110 (30)
+10001001 (-9)
=10100111 (-39)
Il y a un problème ! Vous devriez obtenir 21 soit 00010101 ! C’est qu’en réalité un nombre négatif n’est pas
représenté comme ceci. L’ordinateur "ruse" avec les manipulations binaires. L’astuce consiste à prendre le complément
à un de la valeur binaire en valeur absolue (9 => 9), et de lui rajouter un (on obtient au final un complément à deux).
Le complément à un consiste à remplacer tous les zéros (0) par des un (1) et tous les 1 par des 0.
11111111 (complément à un)
00001001 (9)
=11110110 (tout est inversé)
+00000001 (+1)
=11110111 (équivaut à -9 représentation machine)
Remarque : Si vous additionnez un nombre avec son complément à deux, vous obtenez 0 (plus une retenue).
Maintenant, additionnez ce résultat à 30 :
11110111 (équivaut à -9 représentation machine)
+00011110 (30)
=00010101 (21 - plus une retenue)
C’est gagné ! En pratique le microprocesseur n’effectue pas tous ces calculs de conversion car il sait représenter
nativement en interne toutes ces valeurs, matériellement.
2. La représentation des nombres réels
S’il est simple de se représenter un nombre entier en binaire, cela semble plus complexe avec un nombre à virgule. En
effet, le principe même du binaire veut que chaque valeur représente une puissance de 2 en fonction de sa position de
0 à n, donc une valeur entière. En plus, les nombres réels n’ont jamais la même taille : plus ou moins de chiffres avant
la virgule, plus ou moins après. Il faut prendre le problème à l’envers : ne seraitce pas plutôt la virgule qui se
déplace ?
Ensuite, estce possible de représenter un nombre réel sous forme de résultat d’une manipulation de nombres
entiers ?
Prenez un exemple simple : 1,2.
1,2=12x0,1=12x10 -1 =12E-1
En véritable notation scientifique, on écrit 1,2E0 soit 1,2x10 0 .
Voilà qui est très intéressant. Les nombres 12, 10 et 1 pourraient parfaitement être codés directement en binaire.
Certains ordinateurs spécialisés, dits calculateurs, fonctionnent de cette manière. Vérifiez avec une valeur plus
importante : 182,1957:
182,195=182195x0,001=182195x10
-3 =182195E-3
- 1 -
© ENI Editions - All rigths reserved - Jonifar lina
41
1. Les nombres négatifs
Un nombre signé par exemple sur 8 bits, contient un bit réservé pour le signe. C’est en tout cas ainsi qu’on vous le
présente pour plus de compréhension. Généralement c’est le bit de poids fort, le plus à gauche, qui sert pour le signe :
à 0 le nombre est positif, à 1 il est négatif. Par exemple 9 (10) devrait être représenté par 10001001 (2) . Cette
représentation pratique pour le lecteur ne l’est cependant absolument pas pour l’ordinateur. Additionnez 9 et 30, vous
obtenez 21.
En binaire, 30 équivaut à 00011110. Le binaire s’additionne comme le décimal : 1+1=10 donc retenue de 1, et ainsi de
suite :
00011110 (30)
+10001001 (-9)
=10100111 (-39)
Il y a un problème ! Vous devriez obtenir 21 soit 00010101 ! C’est qu’en réalité un nombre négatif n’est pas
représenté comme ceci. L’ordinateur "ruse" avec les manipulations binaires. L’astuce consiste à prendre le complément
à un de la valeur binaire en valeur absolue (9 => 9), et de lui rajouter un (on obtient au final un complément à deux).
Le complément à un consiste à remplacer tous les zéros (0) par des un (1) et tous les 1 par des 0.
11111111 (complément à un)
00001001 (9)
=11110110 (tout est inversé)
+00000001 (+1)
=11110111 (équivaut à -9 représentation machine)
Remarque : Si vous additionnez un nombre avec son complément à deux, vous obtenez 0 (plus une retenue).
Maintenant, additionnez ce résultat à 30 :
11110111 (équivaut à -9 représentation machine)
+00011110 (30)
=00010101 (21 - plus une retenue)
C’est gagné ! En pratique le microprocesseur n’effectue pas tous ces calculs de conversion car il sait représenter
nativement en interne toutes ces valeurs, matériellement.
2. La représentation des nombres réels
S’il est simple de se représenter un nombre entier en binaire, cela semble plus complexe avec un nombre à virgule. En
effet, le principe même du binaire veut que chaque valeur représente une puissance de 2 en fonction de sa position de
0 à n, donc une valeur entière. En plus, les nombres réels n’ont jamais la même taille : plus ou moins de chiffres avant
la virgule, plus ou moins après. Il faut prendre le problème à l’envers : ne seraitce pas plutôt la virgule qui se
déplace ?
Ensuite, estce possible de représenter un nombre réel sous forme de résultat d’une manipulation de nombres
entiers ?
Prenez un exemple simple : 1,2.
1,2=12x0,1=12x10 -1 =12E-1
En véritable notation scientifique, on écrit 1,2E0 soit 1,2x10 0 .
Voilà qui est très intéressant. Les nombres 12, 10 et 1 pourraient parfaitement être codés directement en binaire.
Certains ordinateurs spécialisés, dits calculateurs, fonctionnent de cette manière. Vérifiez avec une valeur plus
importante : 182,1957:
182,195=182195x0,001=182195x10
-3 =182195E-3
- 1 -
© ENI Editions - All rigths reserved - Jonifar lina
41
