Logo de kxs.frCours d'informatique pour le lycée et la prépa

Écriture d’un nombre réel

Introduction

1) Calculer 0.1 + 0.2 dans la console de Python. Que constatez-vous ?

Nous allons expliquer cela dans ce TP.

Fonctionnement

Base 10

On écrit naturellement un nombre réel en base 10 mais on oublie parfois le sens de cette écriture. Ainsi lorsqu’on écrit 12.65910 cela signifie :

12.65910 = 1 x 101 + 2 x 100 + 6 x 10-1 + 5 x 10-2 + 9 x 10-3

Il est important de noter ici qu’il est impossible d’écrire avec un nombre fini de chiffres certains réels en base 10 : 1/3, π, √2, …

Base 2

En base 2 le fonctionnement est le même. Prenons l’exemple de 101.10012 :

101.10012 = 1 x 22 + 0 x 21 + 1 x 20 + 1 x 2-1 + 0 x 2-2 + 0 x 2-3 + 1 x 2-4

On verra par la suite qu’il est également impossible d’écrire sur un nombre fini de bits certains réels. Et il y en a plus qu’en base 10.

2) Convertissez 11010.1011102 en base 10.

Conversion base 10 → base 2

Pour convertir un nombre à virgule en base 2, il faut suivre la procédure suivante :

3) Prenons l’exemple de 6.3437510.

4) Écrivez 12.695312510 en binaire.

5) Écrivez 0.210 en binaire. Que constatez-vous ?

Certains nombres réels comme 0.210 ou 0.110 ne peuvent pas être écrit exactement en base 2. Ce sont donc des valeurs arrondies qui sont stockées dans la machine. Ce n’est pas un bug, mais pour ces raisons il est très important de ne jamais tester l’égalité de deux flottants :

6) Testez 0.2 + 0.1 == 0.3 dans la console Python. Que constatez-vous ?

Norme IEE-754

La norme IEE-754 est utilisée dans la plupart des langages pour représenter les nombres à virgule flottante. Ces nombres sont représentés sur 32 bits (simple précision) ou sur 64 bits (double précision). Pour en expliquer le fonctionnement nous utiliserons la représentation sur 32 bits.

Définition

Un nombre binaire peut s’écrire sous la forme suivante (un peu comme en écriture scientifique) :

(-1)s x m x 2(e-d)

Dans une représentation sur 32 bits, voici la répartition :

Répartition des bits dans une représentation 32 bits d'un réel

7) Prenons l’exemple suivant pour comprendre : 1 10000110 10101101100000000000000

8) Soit le nombre flottant suivant : 0 01111011 10011001100110011001100. Trouver la représentation en base 10 de ce nombre.

9) Donner la représentation sur 32 bits du nombre -10.12510.

10) Donner la représentation sur 32 bits du nombre 0.2510.