Principes

Principe général : stocker la position de la virgule en plus des chiffres du nombre



représentation normalisée


(1011,101101)2 = (1011,101101)2 × 20
= (101,1101101)2 × 21
= (10,11101101)2 × 22
= (1,011101101)2 × 23  -›  représentation normalisée : 1,mantisse × 2exp

stockage de l'exposant


Il faut pouvoir stocker indifféremment des exposants positifs (nombres dont la valeur absolue est supérieure à 1) ou négatifs (nombres dont la valeur absolue est inférieure à 1) :

(1011,101101)2 = (1011,101101)2 × 20
= (101,1101101)2 × 21
= (10,11101101)2 × 22
= (1,011101101)2 × 23
(0,00101)2 = (0,00101)2 × 20
= (0,0101)2 × 2-1
= (0,101)2 × 2-2
= (1,01)2 × 2-3

décalage de l'exposant

Plutôt que d'utiliser un codage en complément à deux pour l'exposant, on applique un décalage à l'exposant trouvé et on stocke cette valeur décalée. La valeur du décalage dépend du nombre n de bits utilisés pour stocker l'exposant :

décalage = 2n - 1 - 1

Exemple pour un exposant stocké sur 5 bits : décalage = 25 - 1 - 1 = 15.

Ainsi, si l'exposant de la représentation normalisée vaut exp, la valeur stockée sera :

exp + décalage


Exemples pour un exposant stocké sur 5 bits :

(1011,101101)2 = (1,011101101)2 × 23   -›  exposant stocké : 3 + 15 = 18

(0,00101)2 = (1,01)2 × 2-3   -›  exposant stocké : -3 + 15 = 12

stockage de la mantisse


A une exception près, tous les nombres ont une représentation normalisée sous la forme :

1,mantisse × 2exposant

Par conséquent, il n'est pas nécessaire de stocker le 1 situé à gauche de la virgule. On économise ainsi un précieux bit pouvant être utilisé à meilleur escient.

Comme indiqué ci-dessus, il existe une exception : 0 (zéro). Pour cette valeur, il sera nécessaire d'utiliser une combinaison binaire spéciale.

En pratique

Pour trouver la représentation en virgule flottante d'un nombre décimal, il y a donc plusieurs étapes :

  1. Convertir le nombre en binaire

    exemple 1


    (2007)10 -› (11111010111)2

    exemple 2


    (-0,28125)10 -› (-0,01001)2
  2. Déterminer la représentation normalisée du nombre

    exemple 1 (suite)


    (1,1111010111)2 × 210

    exemple 2 (suite)


    (-1,001)2 × 2-2
  3. Ajouter le décalage à l'exposant trouvé et convertir ce résultat en binaire

    exemple 1 (suite et fin)


    exemple 2 (suite et fin)


Norme IEEE 754

Cette norme définit deux types de nombres en virgule flottante : simple précision (32 bits) et double précision (64 bits).

Simple précision

Double précision

valeurs particulières

La norme IEEE 754 réserve les exposants 000...000 (uniquement des 0) et 111...111 (uniquement des 1) pour coder des valeurs particulières
 
exposantmantissevaleur représentée
000...000000...0000 (zéro)
000...000000...001 à 111...111nombre dénormalisé
valeur = ± 0,mantisse * 2-126 ou -1022
111...111000...000± infini
111...111000...001 à 111...111NaN (Not a Number - pas un nombre)
exemple : 0 / 0

Exercices

Donnez la représentation en virgule flottante des nombres ci-dessous sans utiliser de calculatrice.