Représentation IEEE 754 simple précision de \(x = -2,625\)
x est négatif, donc s = 1.
La valeur absolue peut s’exprimer comme somme de puissances positives et négatives de 2 :
\( \begin{align}
2,625 &= 2 + 0,5 + 0,125\\
&= 1\times2^1 + 0\times2^0 + 1\times2^{-1} + 0\times2^{-2} + 1\times2^{-3}\\
&= [10,101]_2\\
\end{align}\)
Il faut normaliser pour que la mantisse s’écrive «\(1,\cdots\) » :
Ici on décale la virgule d’un cran à gauche : \(1,0101.2^1\)
Identification : \((1,f)\times2^{e-127} = 1,0101\times2^1\)
On a donc :
mantisse \(= 1,01010000000000000000000_{2}\)
\(e - 127 = 1\)
donc \( e = 128_{10} = 10000000_{2}\)
1 |
10000000 |
01010000000000000000000 |
---|
s = signe |
e = exposant décalé |
f = pseudo-mantisse |
Puis \(x = [-2,625]_{10}\) est codé par : \( 11000000001010000000000000000000\)
Un site en ligne pour vérifier.
Représentation IEEE 754 simple précision de \(x = 0,1\)
Problème : \(0,1\) s’exprime avec un nombre fini de décimales en base \(10\) , mais pas en base \(2\) !
\([0,1]_{10} = [0,00011001100110011001100110011001100110011\dots]_2\)
Avec un nombre fini de bits, l’ordinateur fait forcément une approximation !
Normalisation :
\([0,00011001100110011\dots]_2 = [1,1001100110011\dots]_2 \times2^{-4}\)
\(f = [0,10011001100110011001101]_2 \) (on arrondit au 23ème bit)
\(e - 127 = -4\)
donc \(e = [123]_{10} = [01111011]_2\)
On obtient :
0 |
01111011 |
10011001100110011001101 |
---|
s = signe |
e = exposant décalé |
f = pseudo-mantisse |
Puis \(x = [0,1]_{10}\) est codé par : \( 00111101110011001100110011001101\)
Un site en ligne pour vérifier.
Décodage
\(x\) est codé par\( 00111101110011001100110011001101 \)
\(s = 0\)
\(\begin{align}
e &= 2^0 + 2^1 + 2^3 + 2^4 + 2^5 + 2^6\\
&= 1 + 2 + 8 + 16 + 32 + 64 \\
&= 123\\
\end{align}\)
\(\begin{align}
f &= 2^{-1} + 2^{-4} + 2^{-5} + 2{^-8} + 2^{-9} + 2^{-12} + 2^{-13} + 2^{-16} + 2^{-17} + 2^{-20}+ 2^{-21} + 2^{-23} \\
&= 0,5 + 0,0625 + ... + 0,000000119209289550781\\
&=0,599999904632568\\
\end{align}\)
On obtient
\(\begin{align}
x& = (-1)^{0}\times(1 + 0,599999904632568)\times2^{123-127}\\
&=1\times1.599999904632568\times2^{-4}\\
&= 0,100000001490116\\
\end{align}\)
L’ordinateur NE PEUT PAS manipuler exactement 0,1 sous forme de flottant !
Ceci induit des comportements qui peuvent sembler étranges...