Écriture d'un nombre réel

De la représentation des réels par des flottants à leur manipulation


… à partir de l’écriture décimale


» Ce que l’on sait en base décimale

Sur un exemple:

\(123,456 = 1 \times 10^2 + 2 \times 10^1 + 3 \times 10^0 + 4 \times \dfrac{1}{10^1} + 5 \times \dfrac{1}{10^2} + 6 \times \dfrac{1}{10^3}\)

\(123,456 = 1 \times 10^2 + 2 \times 10^1 + 3 \times 10^0 + 4 \times 10^{-1} + 5 \times 10^{-2} + 6 \times 10^{-3}\)

Comment retrouver les digits dans cette écriture par le calcul ? Facile !

» Passage de l’écriture décimale à l’écriture binaire

On procède comme précédemment.

Exemple:

Écrire en base 2 le nombre décimal \(13,375\).

Réponse ?

» Passage de l’écriture binaire à l’écriture décimale

Exemple:

Écrire en base 10 le binaire \(\texttt{101,01}_2\).

Réponse ?

… à partir de l’écriture fractionnaire


» Ce que l’on sait en base décimale

Reprenons le premier exemple:

\(123,456 = \dfrac{123456}{1000} = 123 + \dfrac{456}{1000} = 123 + 0,456\)

» Passage de l’écriture décimale à l’écriture binaire

Exemple:

Écrire en base 2 le nombre décimal \(13,375\).

Réponse ?

» Passage de l’écriture binaire à l’écriture décimale

Exemple:

Écrire en base 10 le binaire \(\texttt{101,01}_2\).

Réponse ?

Un peu de pratique ?


Exercice

a) Écrire en base décimale \(\texttt{1000,1}\).

b) Obtenir l’écriture binaire des nombres suivants:

i) \(-7,6875\)

ii) \(0,1\)

iii) \(0,2\)

iv) \(0,3\)

v) \(\dfrac{9}{5}\)

f) \(\dfrac{1}{3}\)

Réponse ?

À RETENIR: \(0,1 + 0,2 \neq 0,3\) avec leurs représentations sous forme de flottants en raison des arrondis.
Les égalités avec des nombres réels ne sont pas toujours convervées lors du passage aux flottants/floats.

Représentation d’un flottant dans la machine (non exigible au bac)

Elle est définie par la norme IEEE-754 dans toutes les machines.

Pour commencer, en binaire, tout nombre peut se ramener à une écriture de la forme \(\pm \texttt{a} \times \texttt{10}^p\) où \(1 \leqslant a < 2 \) (autrement dit \(\texttt{a} \approx \texttt{1,…}\)) et \(p\) est un entier signé. Rappelez vous que \(\texttt{10}_2 = 2_{10}\).

Vous aurez peut être fait le rapprochement avec l’écriture scientifique (\(\pm a \times 10^p\) avec \(1 \leqslant a < 10\)).

Exemple: en binaire, \(\texttt{101,01} = + \texttt{1,0101} \times \texttt{10}^2\).

Par conséquent, dans la machine, il ne reste plus qu' à stocker:

  • le signe: un bit est nécessaire,

  • l'exposant \(p\) (quelque peu transformé pour des soucis de comparaison des flottants) : quelques bits réservés (leur nombre diffère suivant le processeur, donc impossible de représenter tous les nombres),

  • le nombre \(\texttt{a}\) enfin seulement la partie à droite de la virgule puisque on l’est assuré d’avoir un \(texttt{1}\) à gauche de la virgule (la partie conservée s’appelle la mantisse): quelques bits réservés (leur nombre diffère suivant le processeur, donc impossible de représenter tous les nombres et nécessité d’arrondir si besoin).

À titre d’exemple, sur une configuration possédant un processeur de 64 bits La norme impose alors 1 bit pour le signe, 11 bits pour l'exposant transformé et les 52 bits restants pour la mantisse):

\(0,1 = +\texttt{0,0001 1001 1001 1001 1… }_2 = +\texttt{1,1001 1001 1001 … }_2 \times \texttt{10}_2 ^{-4}\).

Comme le 53ème bit est un \(\texttt{1}\), en arrondissant de sorte de garder 52 bits, on a \(0,1 \approx +\texttt{1,1001 1001 1001 … 1001 1010}_2 \times \texttt{10}_2 ^{-4}\) puisque \(\texttt{1001}_2 + \texttt{1}_2 = \texttt{1010}_2\).

Finalement,

  • le signe \(+\) est mémorisé avec le bit 0.

  • l’exposant mémorisé est \(-4+1023 = 1019 = \texttt{011 1111 1011}\).

  • la mantisse est \(\texttt{1001 1001 1001 … 1001 1010}\).

Le nombre \(0,1\) est représenté sous la forme de flottant par \(\fbox{\(\texttt{0}\)} \fbox{\(\texttt{011 1111 1011}\)} \fbox{\(\texttt{1001 1001 1001 … 1001 1010}\)}\).