Représentation d'un nombre fractionnaire en base \(2\)
1. Passage de la base \(10\) à la base \(2\)
Méthode :
Lorsque le nombre \(N\) est fractionnaire, on effectue la conversion de la partie entière et de la partie fractionnaire séparément.
La conversion de la partie entière s’effectue comme la conversion d’un entier relatif.
La conversion de la partie fractionnaire, en revanche, s’effectue en multipliant cette partie par 2. La multiplication est répétée sur la partie décimale du résultat obtenu. La conversion de la partie fractionnaire du nombre N est obtenue par la suite des parties entières de chacun des résultats des multiplications effectuées. On arrête les multiplications une fois que la précision cherchée est obtenue.
Exemple 1 :
Convertir en base \(2\) le nombre \(3,47_{10}\).
La partie entière est \(3\) :
\(3_{10}=11_{2}\)
La partie fractionnaire est \(0,47\)
Ainsi :
\(0,47×2=0,94=0+0,94\)
\(0,94×2=1,88=1+0,88\)
\(0,88×2=1,76=1+0,76\)
\(0,76×2=1,52=1+0,52\)
\(0,52×2=1,04=1+0,04\)
\(0,04×2=0,08=0+0,08\)
Ainsi, \(0,47_{10}=0,011110_{2}\)
On choisit de s'arrêter ici, mais on aurait pu continuer indéfiniment !
Conclusion : \(3,47_{10}=11,01111{_2}\)
Remarque :
Un nombre fractionnaire peut avoir une écriture binaire infinie !
Faites-vous plaisir 1 : Convertir en base \(2\) le nombre \(7,125_{10}\).
Faites-vous plaisir 2 : Convertir en base \(2\) le nombre \(23,103_{10}\).
Faites-vous plaisir 3 : Convertir en base \(2\) le nombre \(27,625_{10}\).
Faites-vous plaisir 4 : Convertir en base \(2\) le nombre \((\frac{1}{3})_{10}\).
Faites-vous plaisir 5 : Convertir \((\frac{1}{3})_{10}\) en base \(3\).
Faites-vous plaisir 6 : Convertir en base 16 le nombre \(568,921_{10}\)
2. Passage de la base \(2\) à la base \(10\)
Soit le nombre \(N\) exprimé dans la base \(2\) par \(N=d_{n}d_{n-1}...d_{2}d_{1}d_{0},d_{-1} d_{-2}...d_{-m}\)
Méthode :
Pour convertir \(N\) en base 10, on écrit \(N\) suivant des puissances de 2 :
\(N=d_{n} d_{n-1}...d_{2} d_{1} d_{0},d_{-1} d_{-2}...d_{-m}\)
\(N=d_{n}×2^n+d_{n-1}×2^{n-1}+...+d_{1}×2^1+d_{0}×2^0+d_{-1}×2^{-1}+d_{-2}×2^{-2}+ ...+d_{-m}×2^{-m}\)
On termine en effectuant l’opération ainsi obtenue.
Faites-vous plaisir 7 : Convertir en base 10 le nombre \(1110,0101_{2}\)
Faites-vous plaisir 8 : Convertir en base 10 le nombre \(1100101,1_{2}\)
Faites-vous plaisir 9 : Effectuer, en binaire, l’opération \(0,1+0,2\) puis donner le résultat en base \(10\).
Faites-vous plaisir 10 : Convertir en base 10 le nombre \(0,12201_{3}\).
Faites-vous plaisir 11 : Convertir en base 10 le nombre \(0,3A216_{16}\).
Représentation des nombres flottants en machine
1. Définitions :
Un nombre réel \(N\) est représenté en virgule flottante dans la base \(b\) s'il est écrit sous la forme \(N=m_{1},m_{2}×b^{±e}\).
\(m_{1},m_{2}\) est la mantisse de ce nombre et e son exposant.
La représentation normalisée de ce nombre, en virgule flottante, est \(N=±0,M×b^{±c}\) où \(M\) est un nombre dont le premier chiffre est différent de 0.
Exemple :
L'écriture normalisée du nombre \(124,5678×10^{5}\) est \(0,1245678×10^{8}\).
L'écriture normalisée du nombre \(9,374×10^{-3}\) est \(0,9374×10^{-2}\).
Les nombres à virgule flottante sont représentés, au niveau matériel, en fractions de nombres binaires.
Par exemples,
\(0,125_{10}=0,001_{2}\) soit \(\frac{1}{10}+\frac{2}{10^2}+\frac{5}{10^3}=\frac{0}{2}+\frac{0}{2^2}+\frac{1}{2^3}\)
\((\frac{1}{3})_{10}\approx0,33_{10}\approx0,01001_{2}\) soit \((\frac{1}{3})_{10}\approx\frac{3}{10}+\frac{3}{10^2}\approx\frac{0}{2}+\frac{1}{2^2}+\frac{0}{2^3}+\frac{0}{2^4}+\frac{1}{2^5}\)
2. Norme IEEE-754
Le nombre de bits d'une machine étant fini (autrement dit limité), on ne peut obtenir qu'une approximation de la plupart des nombres réels.
Aujourd'hui, la quasi-totalité des machines utilisent la norme IEEE-754 pour la représentation des nombres en virgule flottante.
Dans cette norme, la forme normalisée d'un nombre réel s'écrit : \(±1,M×2^{±c}\).
La norme IEEE-754 propose deux formats de représentation d'un nombre flottant.
Dans la représentation en simple précision, 32 bits sont utilisés :
Le \(1\) qui précède \(M\) n'est pas codé en machine. Il est appelé bit caché.
Le signe est codé sur le bit de poids fort (le premier bit à partir de la gauche).
Ce bit vaut \(0\) si la mantisse est positive et \(1\) si la mantisse est négative ;
Les 8 bits suivants codent la caractéristique \(c\) ;
Les bits restants (23) codent le nombre \(M\) exprimé en base \(2\).
Cependant, en machine, la caractéristique \(c\) étant toujours représentée par une valeur positive, elle est remplacée par \(c'\) tel que \(c'=c+127\).
\(+127\) est appelé constante de décalage (constante de translation ou constante d’excentrement) de l’exposant.
Exemple 2 :
Donner la représentation en machine, en simple précision, selon la norme IEEE 754 du nombre \(-10,125_{10}\).
Solution :
\(10,125_{10}=1010,001{_2}=1,010001×2^3\)
\(M=010001\)
\(c’=127+c=127+3=130_{10}=10000010_{2}\)
Le codage de \(-10,125\), en machine, est la chaîne binaire suivante :
\(1\) \(10000010\) \(01000100000000000000000\)
Faites-vous plaisir 12 : Selon le format IEEE-754 simple précision, donner la représentation en machine des nombres suivants, écrits en base \(10\) : \(0,1\) ; \(0,2\) et \(0,3\).
Faites-vous plaisir 13 : Selon le format IEEE-754 simple précision, donner la représentation en machine du nombre 253,75, écrit en base 10.
Faites-vous plaisir 14 : Selon le format IEEE-754 simple précision, donner la représentation en machine du nombre 171,625, écrit en base 10.
Faites-vous plaisir 15 : En simple précision, quel est le nombre représenté en machine par la chaîne binaire suivante \(1 10000001 010000000000000000000000\) ?
Faites-vous plaisir 16 : En simple précision, quel est le nombre représenté en machine par la chaîne binaire suivante \(0 0000111 010010000010000000000000\) ?
Dans l'écriture en format double précision, 64 bits sont utilisés pour représenter un nombre flottant :
Le signe de la mantisse est codé sur le premier bit de l’octet de poids fort. Ce bit vaut 0 si la mantisse est positive et 1 si la mantisse est négative ;
Les 11 bits suivants codent la caractéristique c ;
Les bits restants (52) codent le nombre M exprimé en base 2.
La constante d’excentrement de l’exposant dans ce format est égale à \(+1\) \(023\).
La plupart des systèmes d'exploitation actuel utilisent un « IEEE-754 double précision » pour représenter les floats de Python.
Faites-vous plaisir 17 : Selon le format IEEE-754 double précision, donner la représentation en machine du nombre suivant, écrit en base 10 : 0,3.
Faites-vous plaisir 18 : Quels sont les nombres réels dont la représentation en machine est exacte ?