Eduardo Sanchez
Ecole Polytechnique Fédérale de Lausanne
Représentation des nombres entiers
Représentation des nombres entiers signés
♦ Représentation signe-magnitude:
Le bit de poids fort indique le signe (0 si positif) et les bits restants la valeur du nombre.
Avec n bits on peut représenter des entiers entre:
-(2n-1-1) et +(2n-1-1)
Deux représentations sont possibles pour zéro
♦ Exemple avec n=4:
5 = 0101 -5 = 1101 0 = 0000 = 1000
signe
magnitude
♦ Exemples d'opérations arithmétiques (avec n=4):
5 0101 +3 0011 8 1000
résultat faux (0):
dépassement de capacité
5 0101 -3 1011 2 0000
résultat faux (0)
la soustraction devrait pouvoir être traitée comme une addition:
5 - 3 = 5 + (-3)
♦ Représentation complément à deux:
Le complément à deux d’un nombre est égal à l'inverse du nombre plus 1. Par exemple, le complément à deux de
0101 est (1010+1)=1011
♦ Dans ce système, un nombre négatif est le complément à deux du même nombre positif. Le bit de poids fort d'un nombre négatif est égal à 1
♦ Avec n bits on peut représenter des entiers entre:
-(2n-1) et +(2n-1-1)
♦ Une seule représentation est possible pour zéro
x
n−1x
n−2...x
0 =− x
n−1⋅2
n−1+x
ii=0 n−2
∑
⋅2
icomplément
à 2 0
+2n-1
-2n-1
non signé 2n-1
2n
0
♦ Exemple avec n=4:
♦ Si n=4:
5 = 0101 -5 = 1011 3 = 0011 -3 = 1101 8 = impossible -8 = 1000
0 = 0000
signe
-8 -7 0 7 8
signe-magnitude
-8 -7 0 7 8
complément à 2
-1 -7
15 1111
-2 -6
14 1110
-3 -5
13 1101
-4 -4
12 1100
-5 -3
11 1011
-6 -2
10 1010
-7 -1
9 1001
-8 0
8 1000
7 7
7 0111
6 6
6 0110
5 5
5 0101
4 4
4 0100
3 3
3 0011
2 2
2 0010
1 1
1 0001
0 0
0 0000
complément à 2 signe-
magnitude non signé
♦ Exemples d'opérations arithmétiques (avec n=4):
5 0101 +3 0011 8 1000
résultat faux (-8):
dépassement de capacité
5 0101 -3 1101 2 0010
résultat correct
la soustraction peut être traitée comme une addition:
5 - 3 = 5 + (-3)
♦ Les opérations d'addition et de soustraction sont simplifiées en complément à deux:
A - B A + B
B = B+1
Z = A+B
♦ Traitement du dépassement de capacité pour une addition:
• si les deux opérandes sont du même signe:
dépassement si le résultat est du signe opposé
• si les deux opérandes sont de signe opposé:
il n'y a jamais de dépassement de capacité
♦ Plus formellement, pour des nombres n bits, signés en complément à 2:
overflow = cn ⊕ cn-1
♦ Exemple:
0111 5 0101 +3 +0011 8 1000
carry
ov = cn ⊕ cn-1= 0 ⊕ 1 = 1
♦ Si nous avons deux entiers signés, x et y, en format
complément à 2 sur n bits, leur addition présente 3 cas:
• si x+y ≥ 2n-1, il y a un dépassement de capacité positif
• si -2n-1 ≤ x+y < 2n-1, le résultat est correct
• si x+y < -2n-1, il y a un dépassement de capacité négatif
♦ Pour n=4, les résultats possibles de l'addition de deux nombres signés sont illustrés par la figure suivante
-8 -6
-4 -2 -6
-4 -2
0 2
4 6
-8 -6 -4 -2 0 2 4 6 8
dépassement positif
dépassement négatif
résultat correct
♦ Extension de signe:
Si l'on veut passer un entier signé x d'un format n bits vers un format n+k bits, en gardant la même valeur, il suffit de
faire une extension de signe: le bit de signe est répété sur les nouveaux k bits de poids fort
…
…
…
… …
n
n k