Nombres flottants 1
Nombres flottants 1
1) Notion de développement décimal d’un nombre réel
Avant de débuter la théorie sur le codage des nombres décimaux, on commence par présenter la notion de développement d’un nombre décimal à travers des exemples.
Si on considère un entier naturel, comme $x=1$, son écriture est connue et ne présente pas de difficultés.
Si on considère un nombre rationnel, comme $y = dfrac{1}{2}$, il est possible d’écrire $y$ sous une écriture décimale. En effet, $y = 0,5$. Il s’agit d’une écriture décimale finie.
Cependant, tout les nombres rationnels n’ont pas une écriture décimale finie. En effet, $z = dfrac{1}{3} = 0,3overline{3}…$. On symbolise que le développement est infini en ajoutant une barre sur le $3$ signifiant que le $3$ se répète indéfiniment. De plus, le développement décimal est périodique, c’est à dire que le motif $3$ se répète indéfiniment.
Considérons à présent le nombre $a$ dont le développement décimal est $a = 0,34overline{34}…$. Il s’agit donc d’un nombre dont le développement décimal est une répétition du motif $34$ indéfiniment. En multipliant $a$ par $100$ on obtient alors le nombre $100a = 34,overline{34}$. Il apparait alors qu’en soustrayant à ce nouveau nombre le nombre $a$, la partie décimale disparait: $100a – a = 34,overline{34} – 0,overline{34} = 34$. Or, $100a – a = 99a$.
Finalement, on a donc $99a = 34$ c’est à dire $a = dfrac{34}{99}$.
On peut montrer que l’ensemble des nombres possédant un développement décimal fini ou infinie périodique est exactement l’ensemble des nombres rationnels.
Enfin, il existe des nombres possédant un développement décimal infini non périodique (ou apériodique). Ceux sont les nombres irrationnels comme par exemple $pi =3,14…$ ou $sqrt{2} = 1,41421…$
Nous admettrons après avoir considéré l’ensemble de ces exemples que tout nombre réel $x$ peut s’écrire sous la forme :
$x = a_2a_1a_0, b_1b_2b_3…b_n… = a_2 10^2 + a_1 10^1+a_010^0 + b_1 10^{-1} + b_2 10^{-2} + b_3 10^{-3}+…+b_n10^{-n}+…$, avec $a_i in {0, 1, 2, …, 8, 9 }$, $b_i in {0, 1, 2, …, 8, 9 }$.
Il existe un nombre fini de $a_i$ mais un nombre infini de $b_i$. Si $x$ admet un développement décimal fini, les $b_i$ sont nuls à partir d’un certain rang.
Il est bon de noter toutefois que cette écriture n’est pas unique. En effet, si on s’intéresse au nombre $x = 0,overline{9}$, alors en regardant le nombre $10x – x = 9,overline{9} – 0,overline{9} = 9$, on trouve que $9x = 9$ soit $x = 1$. On retiendra alors que les développements décimaux composés d’une infinité de 9 à partir d’un certain rang sont appelés développements décimaux impropres.
Exemple :
Soit $x = 1234,56780…$,
$1234$ est la partie entière de $x$.
Il est possible d’écrire $x$ un introduisant une puissance de $10$ :
$x = 1234,56780 times 1 = 1234,56780 times 10^0$.
On peut également décaler la virgule, qui devient alors flottante (on pourra alors faire un parallèle avec l’appellation nombre flottant) :
$x = 1,2345678 times 10^3$ ou encore $x = 0,0012345678 times 10^6$.
Le nombre $x$ écrit à l’aide d’une puissance de $10$ possède donc plusieurs écritures.
Chaque écriture est composée d’une mantisse (exemple : $0,0012345678$) et d’un exposant (exemple : $6$). On remarque que chaque écriture possède un couple mantisse-exposant différent : le couple mantisse-exposant n’est pas unique.
En informatique, la règle d’écriture des nombres est d’utiliser une mantisse ne comportant qu’un nombre à gauche de la virgule, non nul.
Exemple :
$23,21 = 2,321 times 10^1$
$0,134 = 1,34 times 10^{-1}$
2) Base deux
On admet la propriété suivante :
Tout nombre réel $x$ s’écrit sous la forme :
$x = a_3a_2a_1a_0, b_1b_2b_3…b_n… $ avec $a_i in {0, 1}$; $b_i in {0, 1}$. Il existe un nombre fini de $a_i$ mais un nombre infini de $b_i$. Si $x$ admet un développement décimal fini, les $b_i$ sont nuls à partir d’un certain rang.
On peut aussi faire apparaitre les puissances de $2$ successives :
$x = a_32^3 + a_22^2 + a_12^1 +a_02^0 + b_12^{-1} + b_22^{-2}+…+b_n2^{-n}+…$.
Exemple :
Soit $x = 3,625$,
On cherche l’écriture en base $2$ de $x$.
Il s’agit pour cela de connaitre les puissances de $2$.
On remarque que $3 = 1 + 2$.
On s’intéresse à présent à la partie décimale :
$0,625 = 0,5 + 0,125$.
Or, $0,5 = dfrac{1}{2} = 2^{-1}$ et $0,125 = dfrac{1}{8} = dfrac{1}{2^3} = 2^{-3}$.
Ainsi, $x = 2 + 1 + 0,5 + 0,125 = 1times 2^1 + 1 times 2^0 + 1 times 2^{-1} + 0 times 2^{-2} + 1 times 2^{-3}$.
C’est à dire $x = overline{11,101}^2$.
En adoptant le choix standard pour l’écriture à l’aide d’une mantisse on a : $x = overline{1,1101}^2times 2^1$
Propriété :
Tout réel est représenté par son signe ($+$ ou $-$), codé par un bit de signe que l’on place sur le bit de poids fort, la mantisse $m$ et l’exposant $e$, écrits en base $2$. Le couple $(m, e)$ est normalisé, en considérant l’écriture qui fait apparaitre un seul chiffre non nul à gauche de la virgule.
Or, comme les calculs en informatiques sont effectués en base $2$, il n’y a que deux chiffres possibles $0$ ou $1$. Si le premier chiffre de la mantisse est non nul, il vaut forcément $1$. Il n’est donc pas nécessaire de coder le premier chiffre dont on connait toujours la valeur : 1.
On remarquera qu’un réel peut avoir un développement décimal illimité. En informatique, un développement décimal illimité n’a pas de sens : on procède donc à une première approximation afin d’écrire ce réel à l’aide d’un développement décimal fini.
On considère que l’exposant varie entre deux bornes $L$ (low), négatif, et $U$ (up) telles que :
$L leq e leq U$
On désigne par $t$ le nombre de chiffres de la mantisse.
Finalement, un nombre réel est codé :
– à l’aide d’un bit de signe (le bit de poids fort)
– d’un exposant
– et d’une mantisse contenant $t$ chiffres.