Représentation approximative des nombres réels

Introduction :
Contrairement aux entiers, les nombres réels ne peuvent pas toujours être représentés de manière exacte en machine. Un ordinateur utilise un nombre fini de bits, ce qui impose une représentation approximative.

I. Le principe de la virgule flottante

Pour stocker un réel, on utilise une notation similaire à la notation scientifique (1,35 × 102), mais en base 2. Le nombre est décomposé en trois éléments :


  1. Le signe : Codé sur 1 bit (0 pour positif, 1 pour négatif).

  2. L'exposant : Il détermine la position de la virgule (la "grandeur" du nombre).

  3. La mantisse : Elle contient les chiffres significatifs (la "précision").

Définition : La Mantisse

La mantisse est la partie fractionnaire du nombre une fois celui-ci "normalisé". En binaire, un nombre est normalisé sous la forme 1,f × 2e. Comme le premier chiffre est toujours un 1, on ne stocke que la partie f (les chiffres après la virgule).

II. Comment convertir la partie fractionnaire en binaire ?

Pour trouver l'écriture binaire de la partie située après la virgule, on utilise la méthode des multiplications successives par 2.
La règle :

  1. On multiplie la partie fractionnaire par 2.

  2. La partie entière du résultat (0 ou 1) devient le bit suivant dans l'écriture binaire.

  3. On recommence avec la partie fractionnaire restante du résultat.

  4. On s'arrête quand la partie fractionnaire devient nulle (représentation exacte) ou quand on a assez de bits (représentation approchée).

Exemple : Le nombre 0,375 (Exact)
  • 0,375 × 2 = 0,75 -> premier bit : 0
  • 0,75 × 2 = 1,5 -> deuxième bit : 1
  • 0,5 × 2 = 1,0 -> trosième bit : 1
  • Fin du calcul car il reste 0.
  • Résultat : 0,37510 = 0,0112.
Exemple : Le nombre 0,1 (Approché/Périodique)
  • 0,1 × 2 = 0,2
  • 0,2 × 2 = 0,4
  • 0,4 × 2 = 0,8
  • 0,8 × 2 = 1,6
  • 0,6 × 2 = 1,2 ->On retrouve le 0,2 du début !
  • Résultat : 0,110 = 0,000110011...2(La suite 0011 se répète à l'infini).

Étude de cas : Conversion et Mantisse

Exemple : Exemple complet avec exposant et mantisse : 13,5
  1. Conversion
    • Partie entière : 13 = 11012
    • Partie fractionnaire : 0,5 × 2 = 1,0 -> 0,12
    • Nombre binaire : 1101,12

  2. Normalisation
  3. On déplace la virgule pour n'avoir qu'un seul 1 avant elle :
    1101,1 = 1,1011 × 23

  4. Identification
    • Exposant : 3 (car on a décalé de 3 rangs).
    • Mantisse : 1011 (la partie après la virgule).

III. Conséquences

L'erreur de précision

Comme la mémoire est finie, l'ordinateur doit couper les mantisses infinies (comme celle de 0,1). C'est pourquoi :
0.1 + 0.2 != 0.3 (en Python, cela donne 0.30000000000000004).