12.07.2015 Views

Poly de cours

Poly de cours

Poly de cours

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

ces opérations. Par contre, elle ne normalise pas les fonctions mathématiques comme exp, log, sin, cos,…. L’intérêt principal <strong>de</strong> cette norme est d’avoir <strong>de</strong>s comportements i<strong>de</strong>ntiques <strong>de</strong>s programmes sur<strong>de</strong>s machines différentes.Le codage d’un nombre est inspiré <strong>de</strong> la notation scientifique comme -1.5 × 10 +3 . Chaque nombre estdécomposé en trois parties : signe, exposant et mantisse. Le signe est codé par le bit <strong>de</strong> poids fort.Ensuite un certain nombre <strong>de</strong> bits sont consacrés à l’exposant et le reste à la mantisse. La tableci-<strong>de</strong>ssous donne le nombre <strong>de</strong> bits <strong>de</strong> chacun <strong>de</strong>s éléments dans les différents formats.Encodage Signe s Exposant e Mantisse m Valeur d’un nombreSimple précision 32 bits 1 bit 8 bits 1≤e≤254 23 bits (-1) s × 1.m ×2 e-127Double précision 64 bits 1 bit 11 bits 1≤e≤2046 52 bits (-1) s × 1.m ×2 e-1023Précision étendue 80 bits 1 bit 15 bits 1≤e≤32766 64 bits (-1) s × 1.m ×2 e-16383Dans la table ci-<strong>de</strong>ssus, la formule 1.m doit être interprétée <strong>de</strong> la façon suivante. Si les bits <strong>de</strong> lamantisse sont b 1 b 2 …b n , on a1.m = 1 + b 1 /2 + b 2 /2 2 + b 3 /2 3 + … + b n /2 nSoit l’exemple en simple précision 101111110101100…0 (0xbf580000 en hexadécimal). Il sedécompose en le signe s = 1, l’exposant e = 01111110 = (126) 10 et la mantisse m = 1010100…0. Lavaleur <strong>de</strong> 1.m = 1+1/2+1/8+1/16 = 1,6875. La valeur du nombre est donc -1,6875 × 2 -1 = -0,84375.Si le nombre <strong>de</strong> bits consacrés à l’exposant est k, la valeur <strong>de</strong> l’exposant e vérifie 0 < e < 2 k -1. Lesvaleurs 0 et 2 k -1 sont réservées pour <strong>de</strong>s valeurs spéciales.La norme prévoit quatre types d’arrondi : vers 0, vers +∞, vers -∞ ou au plus près. En théorie,l’utilisateur a le choix <strong>de</strong> l’arrondi mais aucun <strong>de</strong>s langages <strong>de</strong> programmation actuels ne permet <strong>de</strong> lechoisir effectivement.Les valeurs spéciales qui peuvent être représentées sont données par la table ci-<strong>de</strong>ssous dans le cas <strong>de</strong>la simple précision.Signe Exposant Mantisse Valeur Commentaire0 0 0 0 unique représentation <strong>de</strong> 0s 0 m ≠ 0 (-1) s × 0.m ×2 -126 nombres dénormalisés0 255 0 +∞ résultat <strong>de</strong> 1/01 255 0 -∞ résultat <strong>de</strong> -1/00 255 m ≠ 0 NaN Not a Number : résultat <strong>de</strong> 0/0 ou √-1Dans le cas <strong>de</strong> la simple précision, les valeurs maximales sont ± (2-2 -23 )×2 127 ≅ 2 128 . La plus petitevaleur positive représentable est 2 -23 × 2 -126 = 2 -249 (nombre dénormalisé).- 14 -

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!