Aller au contenu

Entrainement virgule flottante

Principe de la virgule flottante

Exercice : flottant vers décimal

Que vaut \((s=1_2; n=1110_2; m=1,0001_2)_{\mathtt{FP}}\) en décimal ?

Calculez les valeurs de \(s\), \(n\) et \(m\) en base 10, puis appliquez la formule du cours.

\[ s = 1_2 = 1_{10} \]
\[ n = 1110_2 = 8 + 4 + 2 = 14_{10} \]
\[ m = 1,0001_2 = 1 + 0,0625 = 1,0625_{10} \]

On applique la formule s \times m \times 2 ^{n}

\[ (s=1_2; n=1110_2; m=1,0001_2)_{\mathtt{FP}} = 1 \times 1,0625 \times 2^{14} = 17408_{10} \]

Exercice : conversion décimal vers flottant base 2

Déterminez \((s, m, n)_{\mathtt{FP}}\) pour représenter \(0,09375_{10}\) en virgule flottante.

N'oubliez pas de regarder le cours pour la méthode !

On commence par convertir \(0,09375_{10}\) en sa représentation base 2.

La partie entière de 0,09375_{10} est 0, sa conversion est donc triviale.

On convertis la partie fractionnaire.

\(p\) \(q = 2p\) \(q \geq 1\) ? \(q - 1\) \(b\)
\(0,09375\) \(0,1875\) non - \(0\)
\(0,1875\) \(0,375\) non - \(0\)
\(0,375\) \(0,75\) non - \(0\)
\(0,75\) \(1,5\) oui \(0,5\) \(1\)
\(0,5\) \(1\) oui \(0\) \(1\)
\(0\) stop - - -

La partie fractionnaire est donc \(0,09375_{10} = 0,00011_{2}\)

Donc \(0,09375_{10} = 0,00011_{2}\)

Déterminons la mantisse et l'exposant. Pour former la mantisse avec exactement un 1 dans la partie entière il faut décaler la virgule vers la droite 4 fois : \(0,00011_2 \rightarrow 00001,1_2\). L'exposant est donc \(-4\), et \(m=1,1_2\).

On convertis l'exposant en base 2 : \(-4_{10} = -100_2\)

Le nombre est positif, donc \(s=1\)

Donc :

\[ \begin{align} 0,09375_{10} &= (s=1_2; n=-100_2;m=1,1_2)_{\mathtt{FP}}\\ &= (1_2; -100_2;1,1_2)_{\mathtt{FP}} \end{align} \]

IEEE 754