Image ventilateur qui tourne fond du ventilateur Circuit imprimé (image de titrage diode verte diode rouge
Administration

Virgule flottante

Méthode d'écriture des nombres réels utilisée dans les ordinateurs.

Les nombres sont représentés par trois éléments :

  • Le signe (+1 ou -1) toujours codé sur un bit.
  • La mantisse (ont dit aussi significande).
  • l'exposant (entier relatif)

Ces trois éléments sont liés par la formule :

nombre = signe x bexposant

dans laquelle b est la base de numération utilisée. Ce sera le plus souvent 2 mais on trouve des machines qui utilisent d'autres valeurs.

Donnons un exemple (en base 10) :

1,414 = 1 x 1414 x 10-3

1 représente le signe, la mantisse est 1414, l'exposant est -3.

On peut observer immédiatement que le même nombre peut être représenté de plusieurs manières (avec la même précision), par exemple :

1,414 = 1 x 1,414 x 100

1,414 = 1 x 141,4 x 10-2

On fait ainsi flotter la virgule. La position de la virgule est une convention qui est fixée par la norme utilisée. Il faut aussi décider du nombre total de bits utilisés et du nombre utilisé pour coder la mantisse et l'exposant.

La norme IEEE 754

Cette norme parue en 1985 est venu fixer les formats des nombres en virgule flottante utilisés dans les ordinateurs.

Elle spécifie deux formats de nombres en virgule flottante en base 2 et deux formats étendus optionnels. Elle précise également comment doivent doivent être effectuées quelques opérations.

La plupart des ordinateurs actuels utilise la norme IEEE 754. Les calculs sur les flottants IEEE sont en fait cablés, c'est à dire réalisés par des circuits ad hoc dans le processeur.

Le premier format de la norme (sur 32 bits) est appelé simple précision ou binary32. Les bits sont répartis de la manière suivante :
  • 1 bit pour le signe
  • 8 bits pour l'exposant
  • 23 bits pour la mantisse

Le second format de la norme (sur 64 bits) est appelé double précision ou binary64. Les bits sont répartis de la manière suivante :

  • 1 bit pour le signe
  • 11 bits pour l'exposant
  • 52 bits pour la mantisse

Le compilateur gcc du langage C pour les architectures 32 bits utilise le format simple précision pour représenter les variables de type float et le format double précision pour représenter les variables de type double.



Video très bien faite sur la conversion des nombres décimaux en virgule flottante.

Pour en savoir plus

Wikipedia

Convertisseur en ligne (en simple précision)

Exposé très sérieux sur le sujet (Oracle)

Vincent Lefèvre et Paul Zimmermann. Arithmétique flottante. [Rapport de recherche] RR-510. INRIA. 2004. ? Cours surl'arithmétique flottante (niveau DEA)