Ok

En poursuivant votre navigation sur ce site, vous acceptez l'utilisation de cookies. Ces derniers assurent le bon fonctionnement de nos services. En savoir plus.

21/01/2010

Les flottants au format double

next up previous index
suivant: Opérations sur les flottants monter: Les réels précédent: Virgule fixe et flottante. Index


Les flottants au format double

Cette section développe les notions de la section précédente pour les flottants machine, utilisables dans les langage de programmation usuels, elle peut être omise. La représentation d'un double en mémoire se compose de 3 parties : le bit de signe s = ±1 sur 1 bit, la mantisse M $ in$ [0, 252[ sur 52 bits, et l'exposant e $ in$ [0, 211[ sur 11 bits. Pour les nombres ``normaux'', l'exposant est en fait compris entre 1 et 211 - 2, le nombre représenté est le rationnel

 

(1 + $displaystyle {frac{{M}}{{2^{52}}}}$)2e+1-210

 

Pour écrire un nombre sous cette forme, il faut d'abord chercher par quel multiple de 2 il faut le diviser pour obtenir un réel r dans [1, 2[, ce qui permet de déterminer l'exposant e. Ensuite on écrit la représentation en base 2 de r - 1 $ in$ [0, 1[. Exemples :
  • -2 
    Signe négatif. Il faut diviser sa valeur absolue 2 par 21 pour être entre 1 et 2 dont e + 1 - 210 = 1, l'exposant est e = 210. On a alors r = 1, r - 1 = 0. Représentation 
    1 10000000000 00000000...0000
  • 1.5=3/2 
    Signe positif, compris entre 1 et 2 dont l'exposant vérifie e + 1 - 210 = 0 soit e = 210 -1 = 29 +28 +27 +26 +25 +24 +23 +22 +21 +20. On a r - 1 = 1/2 = 2-1. D'où la représentation 
    0 01111111111 10000000...0000
  • 6.4=32/5 
    Positif. Il faut le diviser par 22 pour avoir 8/5 $ in$ [1, 2[ donc e + 1 - 210 = 2 soit e = 210 + 1. Ensuite r = 3/5 qu'il faut écrire en base 2 (cf. section précédente), on écrit donc les 52 premiers éléments du développement avec une règle d'arrondi du dernier bit au nombre le plus proche. Ici le bit suivant le dernier 1001 est un 1, on arrondit donc à 1010. D'où la représentation 
    0 1000000001 100110011001...10011010
On observe que la représentation en base 2 de 6.4 a du être arrondie (car elle est infinie en base 2) bien qu'elle soit exacte (finie) en base 10. Seuls les entiers et les rationnels dont le dénominateur est une puissance de 2 peuvent être représentés exactement. Ceci entraine des résultats qui peuvent surprendre comme par exemple le fait que 0.3 - 3*0.1 n'est pas nul.

Des représentations spéciales (avec e = 0 ou e = 211 - 1) ont été introduites pour représenter ±$ infty$ (pour les flottants plus grands en valeur absolue que le plus grand flottant représentable), et pour représenter les nombres non nuls plus petits que le plus petit flottant représentable de la manière exposée ci-dessus (on parle de flottants dénormalisés), ainsi que le nombre NaN (Not a Number) lorsqu'une opération a un résultat indéfini (par exemple 0/0).

 


next up previous index
suivant: Opérations sur les flottants monter: Les réels précédent: Virgule fixe et flottante. Index
Retour à la page principale de mat249
Source : http://www-fourier.ujf-grenoble.fr/~parisse/mat249/mat249...
Source :