CHAPITRE 5 Les nombres entiers 1
Les entiers 2
Les entiers signés représentations pour le 0
Les entiers signés On doit prendre en compte la facilité avec laquelle les opérations mathématiques peuvent être implémentées
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) =3-2 =1 = =2-1 =1 Ce n’est pas très pratique!
Complément à 2 6 Nombre 2 Valeur Nombre 2 Valeur
Complément à 2 Implication pour l’addition (-1) 1
Complément à 2 Inverse d’un nombre Inverser chaque bit et ajouter 1 au résultat 8 5 en binaire : 0101 Inverse les bits : 1010 Ajoute 1 : 1011
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 9
Instructions arithmétiques 10
Instructions arithmétiques Addition Soustraction 11 addrs1, {rs2 | imm 13 }, rd addcrs1, {rs2 | imm 13 }, rd addcccrs1, {rs2 | imm 13 }, rd inc{imm 13,} rs1 inccc{imm 13,} rs1 subrs1, {rs2 | imm 13 }, rd subcrs1, {rs2 | imm 13 }, rd subcccrs1, {rs2 | imm 13 }, rd dec{imm 13,} rs1 deccc{imm 13,} rs1
Instructions arithmétiques Multiplication Division Négation 12 mulxrs1, {rs2 | imm 13 }, rd udivxrs1, {rs2 | imm 13 }, rd sdivxrs1, {rs2 | imm 13 }, rd negrs1 negrs1, rs2
Débordement de capacité (v) ?
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 Il ne peut y avoir de débordement si les opérandes sont de mêmes signes! ? ?
Débordement de capacité 15
Débordement de capacité 16
Report (c) 17
Report Exemple avec un mot de 4 bits, addition de double-mot ! C Instructions SPARC addcc addccc bvs
Report Exemple avec un mot de 4 bits, soustraction de double-mot ! C Instructions SPARC subcc subccc bvs Emprunt
Report Exemple avec un mot de 4 bits, soustraction (par l’addition de l’inverse) (-41) ! C Le report est à 0!
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 21
Report 22 + =
Multiplication non signée 23
Multiplication non signée =
Multiplication non signée
Multiplication non signée Produit :
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 : Produit 2 : C=0 1101
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 : Produit 2 : C=0 B=1
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 : Produit 2 : B=1
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 : Produit 2 : C=1 1101
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 : Produit 2 : C=1 B=1
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 : Produit 2 : B=1
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 : Produit 2 : C=0 0000
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 : Produit 2 : C=0 B=1
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 : Produit 2 : B=1
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 : Produit 2 : C=1 1101
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 : Produit 2 : C=1 B=1
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 : Produit 2 : B=1 On obtient 143!
Multiplication signée 39
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 40
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. 41
Division signée 42