1 CHAPITRE 5 Les nombres entiers 2 Les
1 CHAPITRE 5 Les nombres entiers
2 Les entiers •
3 Les entiers signés • 2 représentations pour le 0 000 +0 001 +1 010 +2 011 +3 100 -0 101 -1 110 -2 111 -3
4 Les entiers signés • On doit prendre en compte la facilité avec laquelle les opérations mathématiques peuvent être implémentées. + 1 1 0 0 0 1 1 000 +0 001 +1 010 +2 011 +3 100 -0 101 -1 110 -2 111 -3
5 Les entiers signés • On peut régler le problème en examinant le bit de signe • Si les 2 opérandes sont de signe contraire • Soustraire à la plus grande valeur absolue la plus petite • Le signe du résultat est celui de la plus grande valeur (prise en absolue) +0 001 +1 = 3 - = 1 010 +2 = -1 011 +3 = 2 - 100 -0 = 1 101 -1 110 -2 111 -3 Ce n’est pas très pratique! 2 000 1
6 Complément à 2 • Nombre 2 Valeur 0000 +0 1111 -1 0001 +1 1110 -2 0010 +2 1101 -3 0011 +3 1100 -4 0100 +4 1011 -5 0101 +5 1010 -6 0110 +6 1001 -7 0111 +7 1000 -8
7 Complément à 2 • Implication pour l’addition 0101 + 1010 1111 (-1) 1011 + 0110 1 0001 1
8 Complément à 2 • Inverse d’un nombre • Inverser chaque bit et ajouter 1 au résultat 5 en binaire : 0101 Inverse les bits : 1010 Ajoute 1 : 1011
9 Complément à 2 • Toute valeur signée hexadécimale • Est positive si débute par [0 -7] • Est négative si débute par [8 -F] • La complémentarité à 2 fonctionne pour n’importe quelle base
10 Instructions arithmétiques •
11 Instructions arithmétiques • Addition add rs 1, {rs 2 | imm 13 }, rd addccc rs 1, {rs 2 | imm 13 }, rd inc {imm 13, } rs 1 inccc {imm 13, } rs 1 • Soustraction sub rs 1, {rs 2 | imm 13 }, rd subccc rs 1, {rs 2 | imm 13 }, rd dec {imm 13, } rs 1 deccc {imm 13, } rs 1
12 Instructions arithmétiques • Multiplication mulx rs 1, {rs 2 | imm 13 }, rd udivx rs 1, {rs 2 | imm 13 }, rd sdivx rs 1, {rs 2 | imm 13 }, rd neg rs 1, rs 2 • Division • Négation
13 Débordement de capacité (v) • + 0111 7 0110 6 1101 -3?
14 Débordement de capacité • Il se produit un débordement dans une soustraction si les opérandes ont des signes différents et que le résultat est de signe contraire au premier opérande • Une soustraction revient à faire une addition avec le complément à deux du second opérande - 0111 7 1101 -3 0111 7 1010 -6? 0110 6? • Il ne peut y avoir de débordement si les opérandes sont de mêmes signes!
15 Débordement de capacité •
16 Débordement de capacité •
17 Report (c) •
18 Report • Exemple avec un mot de 4 bits, addition de double-mot C 0000 11110 27 0001 1011 +45 +0010 +1101 72 0011 1000 Instructions SPARC • addccc • bvs 00111000 56! 01001000 72 0011 +1 0100
19 Report • Exemple avec un mot de 4 bits, soustraction de double-mot C 0000 10000 87 0101 0111 -41 -0010 -1001 46 0011 11110 Emprunt Instructions SPARC • subccc • bvs 00111110 62! 00101110 46 0011 -1 0010
20 Report • Exemple avec un mot de 4 bits, soustraction (par l’addition de l’inverse) C 1010 01110 87 0101 0111 +(-41) +1101 +0111 46 10010 01110 00101110 Le report est à 0! 46!
21 Report • Sur le SPARC, addccc ne fonctionne pas pour des opérandes de 64 bits • L’addition s’effectue en 4 étapes 1. Effectuer l’addition des mots les moins significatifs, avec C et V; 2. Effectuer l’addition du mot le plus significatif du 2 e opérande et de C, avec C et V; 3. Effectuer l’addition du résultat et du mot le moins significatif, avec C et V; 4. Vérifier s’il y a eu débordement
22 Report + =
23 Multiplication non signée •
24 Multiplication non signée • 01101000 + 00011010 + 00001101 = 10001111 143
25 Multiplication non signée • 1 1 0 1 1 1 0 0 0 0 1 1
26 Multiplication non signée • Produit : 0000 1011
27 Multiplication non signée • L’algorithme est donc • Répéter n fois (n = nombre de bits, ici 4) 1. Si le bit le moins significatif du mot le moins significatif du produit vaut 1, ajouter le multiplicande au mot le plus significatif du produit, sinon ajouter 0 • Conserver le bit C de cette addition Produit : 0000 1011 1101 Produit 2 : 1101 1011 C=0
28 Multiplication non signée • L’algorithme est donc • Répéter n fois (n = nombre de bits, ici 4) 2. Décaler le mot le plus significatif du produit d’une position vers la droite. • Conserver la valeur du bit perdu • La valeur du bit C précédent est insérée à gauche. Produit : 1101 1011 C=0 Produit 2 : 0110 1011 B=1
29 Multiplication non signée • L’algorithme est donc • Répéter n fois (n = nombre de bits, ici 4) 3. Décaler le mot le moins significatif du produit d’une position vers la droite. • Introduire à gauche le bit perdu de l’étape précédente. Produit : 0110 1011 Produit 2 : 0110 1101 B=1
30 Multiplication non signée • L’algorithme est donc • Répéter n fois (n = nombre de bits, ici 4) 1. Si le bit le moins significatif du mot le moins significatif du produit vaut 1, ajouter le multiplicande au mot le plus significatif du produit, sinon ajouter 0 • Conserver le bit C de cette addition Produit : 0110 1101 Produit 2 : 0011 1101 C=1
31 Multiplication non signée • L’algorithme est donc • Répéter n fois (n = nombre de bits, ici 4) 2. Décaler le mot le plus significatif du produit d’une position vers la droite. • Conserver la valeur du bit perdu • La valeur du bit C précédent est insérée à gauche. Produit : 0011 1101 C=1 Produit 2 : 1001 1101 B=1
32 Multiplication non signée • L’algorithme est donc • Répéter n fois (n = nombre de bits, ici 4) 3. Décaler le mot le moins significatif du produit d’une position vers la droite. • Introduire à gauche le bit perdu de l’étape précédente. Produit : 1001 1101 Produit 2 : 1001 1110 B=1
33 Multiplication non signée • L’algorithme est donc • Répéter n fois (n = nombre de bits, ici 4) 1. Si le bit le moins significatif du mot le moins significatif du produit vaut 1, ajouter le multiplicande au mot le plus significatif du produit, sinon ajouter 0 • Conserver le bit C de cette addition Produit : 1001 1110 0000 Produit 2 : 1001 1110 C=0
34 Multiplication non signée • L’algorithme est donc • Répéter n fois (n = nombre de bits, ici 4) 2. Décaler le mot le plus significatif du produit d’une position vers la droite. • Conserver la valeur du bit perdu • La valeur du bit C précédent est insérée à gauche. Produit : 1001 1110 C=0 Produit 2 : 0100 1110 B=1
35 Multiplication non signée • L’algorithme est donc • Répéter n fois (n = nombre de bits, ici 4) 3. Décaler le mot le moins significatif du produit d’une position vers la droite. • Introduire à gauche le bit perdu de l’étape précédente. Produit : 0100 1110 Produit 2 : 0100 1111 B=1
36 Multiplication non signée • L’algorithme est donc • Répéter n fois (n = nombre de bits, ici 4) 1. Si le bit le moins significatif du mot le moins significatif du produit vaut 1, ajouter le multiplicande au mot le plus significatif du produit, sinon ajouter 0 • Conserver le bit C de cette addition Produit : 0100 1111 1101 Produit 2 : 0001 1111 C=1
37 Multiplication non signée • L’algorithme est donc • Répéter n fois (n = nombre de bits, ici 4) 2. Décaler le mot le plus significatif du produit d’une position vers la droite. • Conserver la valeur du bit perdu • La valeur du bit C précédent est insérée à gauche. Produit : 0001 1111 C=1 Produit 2 : 1000 1111 B=1
38 Multiplication non signée • L’algorithme est donc • Répéter n fois (n = nombre de bits, ici 4) 3. Décaler le mot le moins significatif du produit d’une position vers la droite. • Introduire à gauche le bit perdu de l’étape précédente. Produit : 1000 1111 Produit 2 : 1000 1111 On obtient 143! B=1
39 Multiplication signée •
40 Division non signée • Similaire à l’algorithme de la multiplication • L’ordre des étapes est inversé • On décale à gauche au lieu de décaler à droite • Au lieu d’une addition, on fait une soustraction
41 Division non signée • L’algorithme final est • Initialiser le quotient avec le dividende • Initialiser le reste à 0 • Répéter n fois (n = nombre de bits) 1. Décaler d’une position vers la gauche la valeur du quotient. • Le bit perdu est conservé pour l’étape suivante 2. Décaler d’une position vers la gauche la valeur du reste • Le bit le moins significatif est remplacé par la valeur du bit perdu précédent 3. Soustraire le diviseur du reste 4. Si le résultat de la soustraction est négatif, mettre le bit le moins significatif du quotient à 0 et additionner le diviseur au reste, sinon mettre le bit le moins significatif du quotient à 1.
42 Division signée •
- Slides: 42