« Fonctionnement d'un ordinateur/Les circuits de calcul flottant » : différence entre les versions

Contenu supprimé Contenu ajouté
Ligne 109 :
Calculer sur des nombres flottants peut sembler trivial, mais les mathématiques ne sont pas vraiment d'accord avec cela. En effet, le résultat d'un calcul avec des flottants n'est pas forcément un flottant valide. LIl doit subir quelques transformations pour être un nombre flottant : il doit souvent être arrondi, mais il doit aussi passer par d'autres étapes dites de normalisation.
 
[[File:Normalisation in circuit.png|centre|vignette|upright=1|Normalisation in circuit]]
 
====La prénormalisation====
Ligne 115 :
La '''prénormalisation''' gère le bit implicite. Lorsqu'un circuit de calcul fournit son résultat, celui-ci n'a pas forcément son bit implicite à 1. On est obligé de décaler la mantisse du résultat de façon à ce que le bit implicite soit un 1. Pour savoir de combien de rangs il faut décaler, il faut compter le nombre de zéros situés avant le 1 de poids fort, avec un circuit spécialisé. Ce circuit permet aussi de détecter si la mantisse vaut zéro. Mais si on décale notre résultat de n rangs, cela signifie qu'on le multiplie par 2 à la puissance n. Pour régler ce problème, il faut corriger l'exposant du résultat pour annuler la multiplication par 2 à la puissance n. Il suffit pour cela de lui soustraire n, le nombre de rangs dont on a décalé la mantisse.
 
[[File:Circuit de prénormalisation.jpg|centre|vignette|upright=2|Circuit de prénormalisation.]]
 
====La normalisation====
Ligne 121 :
Une fois ce résultat calculé, il faut faire un arrondi du résultat avec un circuit de '''normalisation'''. Malheureusement, il arrive que ces arrondis décalent la position du bit implicite d'un rang, ce qui se résout avec un décalage si cela arrive. Le circuit de normalisation contient donc de quoi détecter ces débordements et un décaleur. Bien évidemment, l'exposant doit alors lui aussi être corrigé en cas de décalage de la mantisse.
 
[[File:Circuit de postnormalisation.jpg|centre|vignette|upright=2|Circuit de postnormalisation.]]
 
====résumé====
Ligne 127 :
Le circuit complet, qui effectue à la fois normalisation et arrondis est le suivant :
 
[[File:Circuit de normalisation-arrondi.PNG|centre|vignette|upright=2|Circuit de normalisation-arrondi]]
 
===La multiplication flottante===