Représentation des nombres entiers signés
Transcription
Représentation des nombres entiers signés
Représentation des nombres entiers Eduardo Sanchez Ecole Polytechnique Fédérale de Lausanne 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 Page 2 Eduardo Sanchez Ecole Polytechnique Fédérale de Lausanne signe magnitude Exemples d'opérations arithmétiques (avec n=4): 5 +3 8 0101 0011 1000 résultat faux (0): dépassement de capacité la soustraction devrait pouvoir être traitée comme une addition: 5 - 3 = 5 + (-3) 5 -3 2 Page 3 0101 1011 0000 résultat faux (0) Eduardo Sanchez Ecole Polytechnique Fédérale de Lausanne 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) x n1 x n2 ... x 0 = x n1 2 n1 n2 + xi 2 i= 0 Une seule représentation est possible pour zéro Page 4 Eduardo Sanchez Ecole Polytechnique Fédérale de Lausanne i 2n 2n-1 +2n-1 complément à2 non signé 0 0 -2n-1 Eduardo Sanchez Ecole Polytechnique Fédérale de Lausanne Page 5 Exemple avec n=4: 5 = 0101 3 = 0011 8 = impossible -5 = 1011 -3 = 1101 -8 = 1000 signe 0 = 0000 Si n=4: signe-magnitude -8 -7 0 7 8 -8 -7 0 7 8 complément à 2 Page 6 Eduardo Sanchez Ecole Polytechnique Fédérale de Lausanne non signé signemagnitude complément à 2 0000 0 0 0 0001 1 1 1 0010 2 2 2 0011 3 3 3 0100 4 4 4 0101 5 5 5 0110 6 6 6 0111 7 7 7 1000 8 0 -8 1001 9 -1 -7 1010 10 -2 -6 1011 11 -3 -5 1100 12 -4 -4 1101 13 -5 -3 1110 14 -6 -2 1111 15 -7 -1 Eduardo Sanchez Ecole Polytechnique Fédérale de Lausanne Page 7 Exemples d'opérations arithmétiques (avec n=4): 5 +3 8 0101 0011 1000 résultat faux (-8): dépassement de capacité la soustraction peut être traitée comme une addition: 5 - 3 = 5 + (-3) 5 -3 2 Page 8 0101 1101 0010 résultat correct Eduardo Sanchez Ecole Polytechnique Fédérale de Lausanne 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 Eduardo Sanchez Ecole Polytechnique Fédérale de Lausanne Page 9 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: 5 +3 8 Page 10 0111 carry 0101 +0011 1000 ov = cn cn-1= 0 1 = 1 Eduardo Sanchez Ecole Polytechnique Fédérale de Lausanne 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 Eduardo Sanchez Ecole Polytechnique Fédérale de Lausanne Page 11 résultat correct dépassement négatif dépassement positif 8 6 4 2 0 6 -2 4 2 -4 0 -6 -2 -8 -4 -8 Page 12 -6 -4 -2 -6 0 2 4 -8 6 Eduardo Sanchez Ecole Polytechnique Fédérale de Lausanne 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 … … Page 13 … … … k n Eduardo Sanchez Ecole Polytechnique Fédérale de Lausanne