06/10/2018
Codage des nombres négatifs
• Trois méthodes classiques pour coder les
entiers négatifs (signe moins) :
– Méthode du signe-module (Sign-
Magnitude Method)
Codage des nombres négatifs – Méthode du complément à 1 (One’s-
Complement Method)
– Méthode du complément à 2 (Two’s-
Complement Method)
Architecture des ordinateurs & Algorithmique Pr. DARGHAM Abdelmajid ENSAK Architecture des ordinateurs & Algorithmique Pr. DARGHAM Abdelmajid ENSAK
Codage des nombres négatifs Codage des nombres négatifs
• Méthode du signe-module (valeur absolue)
Soustraire les modules
– Le bit du poids fort (MSB, Most Significant Opération Additionner les modules
A> B A< B A= B
Bit) est réservé pour le signe du nombre : 1 si
(+A) + (+B) + (A + B)
c’est le nombre est négatif, et 0 si c’est le
(+A) + (-B) + (A – B ) - (B – A ) + (A – B )
nombre est positif.
(-A) + (+B) - (A – B ) + (B – A ) + (A – B )
– Les (N-1) bits restants sont utilisés pour coder
(-A) + (-B) - ( A + B)
la valeur absolue du nombre (en binaire pur).
(+A) - (+B) + (A – B ) - (B – A ) + (A – B )
– L’intervalle des entiers représentables avec (+A) - (-B) + (A + B)
cette méthode est alors : (-A) - (+B) - ( A + B)
[-2N-1 + 1, 2N-1 - 1] (-A) - (-B) - (A – B ) + (B – A ) + (A – B )
Architecture des ordinateurs & Algorithmique Pr. DARGHAM Abdelmajid ENSAK Architecture des ordinateurs & Algorithmique Pr. DARGHAM Abdelmajid ENSAK
Codage des nombres négatifs Codage des nombres négatifs
• Inconvénients de la méthode signe-module
• Exemples
– Il y a deux représentations distinctes pour le
nombre zéro : – Sur N = 8 bits :
+0 = 0000…000 • X = 102 Rep(X) = 01100110
- 0 = 1000…000 • Y = -102 Rep(Y) = 11100110
- Les opérations arithmétiques ne sont pas faciles à • Z = 127 Rep(Z) = 01111111
effectuer : il faut tenir compte des signes et des • U = 128 U est non représentable
modules des opérandes.
• V = -127 Rep(V) = 11111111
- Il peut y avoir une erreur de débordement
(Overflow) lorsque les résultats ne sont pas dans
l’intervalle [-2N-1 + 1, 2N-1 - 1].
Architecture des ordinateurs & Algorithmique Pr. DARGHAM Abdelmajid ENSAK Architecture des ordinateurs & Algorithmique Pr. DARGHAM Abdelmajid ENSAK
1
06/10/2018
Codage des nombres négatifs Codage des nombres négatifs
• Exercice corrigé (en séance du cours) • Méthode du complément à 1 (ou complément
– Effectuer les opérations suivantes en utilisant le logique)
codage du signe-module sur 8 bits : – Cas d’un nombre positif : on le code comme dans
• 22 + 11 la méthode de la valeur absolue.
• (-22) + 11 – Cas d’un nombre négatif :
• 22 + (-11) • On code son nombre opposé (qui est positif).
• 22 + (-22) • On calcule le complément logique du code
obtenu (en transformant les 0 en 1, et vice-
• (-22) + (-11)
versa).
• 22 + 120 – Le bit du poids fort est toujours utilisé pour coder
• (-22) + (-106) le signe du nombre (0 : positif / 1 : négatif)
Architecture des ordinateurs & Algorithmique Pr. DARGHAM Abdelmajid ENSAK Architecture des ordinateurs & Algorithmique Pr. DARGHAM Abdelmajid ENSAK
Codage des nombres négatifs Codage des nombres négatifs
• Inconvénients • Exemples
– Il y a deux représentations distinctes pour le nombre – Sur N = 8 bits :
zéro :
• X = 102 Rep(X) = 01100110
+0 = 0000…000
- 0 = 1111…111 • Y = -102 Rep(Y) = CA1(01100110) =
– Il y aura une erreur de débordement (Overflow) 10011001
lorsque le résultat n’est pas dans l’intervalle [-2N-1 + • Z = 127 Rep(Z) = 01111111
1, 2N-1 - 1]. • U = 128 U est non représentable
• Avantages • V = -127 Rep(V) = CA1(0111111) =
– La soustraction peut être effectuée en utilisant 10000000
l’addition.
Architecture des ordinateurs & Algorithmique Pr. DARGHAM Abdelmajid ENSAK Architecture des ordinateurs & Algorithmique Pr. DARGHAM Abdelmajid ENSAK
Codage des nombres négatifs Codage des nombres négatifs
• Exercice corrigé • Solution
– Donner la valeur décimale du nombre dont – Le bit du poids fort est = 1 X est négatif
le code sur N = 8 bits en utilisant la – La valeur absolue du nombre est obtenue
méthode du complément à 1 est : 11000100 en calculant le complément à 1 du code :
CA1(11000100) = 00111011
– |X| = 2 + 24 + 23 + 21 + 20
5
– |X| = 32 + 16 + 8 + 2 + 1
– |X| = 59
X = -59
Architecture des ordinateurs & Algorithmique Pr. DARGHAM Abdelmajid ENSAK Architecture des ordinateurs & Algorithmique Pr. DARGHAM Abdelmajid ENSAK
2
06/10/2018
Codage des nombres négatifs Codage des nombres négatifs
• Méthode du complément à 2 (ou • Méthode du complément à 2 (ou
complément arithmétique) complément arithmétique)
– Un nombre positif est représenté en – Soit -A un nombre négatif à coder en
binaire pur, avec un 0 en bit de poids fort. complément à 2 (A étant positif) sur N bits
– Un nombre négatif est représenté avec une – On veut que -A = 1???...???
séquence de bits en respectant les deux – A = 0§§§…§§§
conditions suivantes : – On veut que : -A + A = 0
• La somme du nombre et de son opposé – L’idée est de représenter -A comme étant la
est égale à 0. valeur binaire de -A + 2N
• Le bit de poids fort est égal à 1.
Architecture des ordinateurs & Algorithmique Pr. DARGHAM Abdelmajid ENSAK Architecture des ordinateurs & Algorithmique Pr. DARGHAM Abdelmajid ENSAK
Codage des nombres négatifs Codage des nombres négatifs
• Méthode du complément à 2 (ou complément • Exemple
arithmétique)
– Pour coder X = -12 en complément à 2 sur
– Par suite : -A + A + 2N = 0 + 2N = 2N 8 bits en utilisant la méthode du
– Le nombre 2N se représente sur N+1 bits complément à 2, on suit les étapes
comme 1000…000 (1, suivi de N zéros). suivantes :
– Si l’on ignore le bit de poids fort 1, on – (-12) ∈ [-27, 27-1] = [-128, 127]
s’aperçoit qu’effectivement : -A + A = 0. – (-12) + 28 = 256 - 12 = 244
– C’est la méthode du complément à 2. – 244 = (11110100)2
– Avec Cette méthode, on peut coder sans erreur – (-12) = (11110100)CA2
tous les entiers de l’intervalle [-2N-1, 2N-1-1]
Architecture des ordinateurs & Algorithmique Pr. DARGHAM Abdelmajid ENSAK Architecture des ordinateurs & Algorithmique Pr. DARGHAM Abdelmajid ENSAK
Codage des nombres négatifs Codage des nombres négatifs
• Algorithme (1) de codage d’un nombre négatif • Exemple
(-A) en complément à 2 – Codons (-12) en complément à 2 sur 8 bits.
– Calculer la représentation binaire de A – Étape 1 :
– Calculer le complément à 1 de A : CA1(A) (12)10 = (00001100)2
– Ajouter +1 au résultat – Étape 2 :
CA1 (12)10 = (11110011)CA1
– Étape 3 :
CA2 1 + (11110011)CA1 = (11110100)CA2
-12 = (11110100)CA2
Architecture des ordinateurs & Algorithmique Pr. DARGHAM Abdelmajid ENSAK Architecture des ordinateurs & Algorithmique Pr. DARGHAM Abdelmajid ENSAK
3
06/10/2018
Codage des nombres négatifs Codage des nombres négatifs
• Algorithme (1) de codage d’un nombre négatif • Exemple
–A en complément à 2 – Codons (-12) en complément à 2 sur 8 bits.
– Calculer la représentation binaire de A – Étape 1 :
– Copier tous les bits 0 à partir de la droite (12)10 = (00001100)2
jusqu’au premier bit égal à 1 (ce bit inclus). – Étape 2 :
– Complémenter les bits restants Copie des bits 0 et du 1er 1 à droite
(00001100)2
– Étape 3 :
Complémentation des bits restants (11110100)CA2
-12 = (11110100)CA2
Architecture des ordinateurs & Algorithmique Pr. DARGHAM Abdelmajid ENSAK Architecture des ordinateurs & Algorithmique Pr. DARGHAM Abdelmajid ENSAK
Codage des nombres négatifs Codage des nombres négatifs
• Avantages de la méthode du complément à • Règles de calcul en complément à 2
2 – Calculer l’opposé d’un nombre X : -X =
– Il est facile de tester si un nombre est CA2(X).
négatif : sa représentation binaire – A + B : s’effectue comme en binaire.
commence par un 1. – A - B : on calcule A + CA2(B)
– Les opérations arithmétiques sont très – Il y débordement (Overflow) seulement
simples à effectuer en complément à 2. dans le cas où si deux nombres de même
signe qui sont additionnés donne un résultat
de signe différent.
Architecture des ordinateurs & Algorithmique Pr. DARGHAM Abdelmajid ENSAK Architecture des ordinateurs & Algorithmique Pr. DARGHAM Abdelmajid ENSAK
Codage des nombres négatifs Codage des nombres négatifs
• Exemples (sur 4 bits) • Exemples (sur 4 bits)
– (-5) (5)10 = (0101)2 = (1011)CA2 – (-7)10 + (-6)10 = (1001)CA2 + (1010)CA2 =
– (5)10 + (2)10 = (0101)CA2 + (0010)CA2 = (10011)CA2 Overflow
(0111)CA2 = (7)10 – (-5)10 - (2)10 = (1011)CA2 - (0010)CA2 =
– (5)10 + (3)10 = (0101)CA2 + (0011)CA2 = (1011)CA2 + (1110)CA2 = (11001)CA2 On
(1000)CA2 Overflow ignore le bit 1 (-5)10 - (2)10 = (1001)CA2
– (5)10 - (2)10 = (0101)CA2 - (0010)CA2 = = (-7)10
(0101)CA2 + (1110)CA2 = (10011)CA2 On – (-6)10 - (4)10 = (1010)CA2 + (11000)CA2 =
ignore le bit 1 (5)10 - (2)10 = (0011)CA2 = (10110)CA2 Overflow
= (3)10
Architecture des ordinateurs & Algorithmique Pr. DARGHAM Abdelmajid ENSAK Architecture des ordinateurs & Algorithmique Pr. DARGHAM Abdelmajid ENSAK