Académique Documents
Professionnel Documents
Culture Documents
Cours
Ex ...
La norme IEEE 754 est utilisée pour représenter les nombres à virgule flottante en informatique.
Elle définit plusieurs formats, dont les plus courants sont les formats simple précision (32 bits) et
double précision (64 bits).
Format Simple Précision (32 bits)
• 1 bit de signe (0 pour positif, 1 pour négatif).
• 8 bits pour l'exposant.
• 23 bits pour la mantisse.
La mantisse représente la partie fractionnaire du nombre, et l'exposant définit la position de la
virgule.
Format Double Précision (64 bits)
• 1 bit de signe.
• 11 bits pour l'exposant.
• 52 bits pour la mantisse.
La norme IEEE 754 permet de représenter des nombres très grands ou très petits avec une précision
élevée. Elle est largement utilisée pour les calculs en virgule flottante, mais elle peut entraîner des
problèmes d'arrondi dans certaine
a. en décimal
La notation décimale traditionnelle utilise une virgule fixe, où les nombres sont écrits avec une
virgule entre les chiffres.
Un nombre en virgule flottante est divisé en trois parties : le signe, la mantisse (les chiffres
significatifs du nombre), et la position de la virgule.
Mantisse
e
R = +
- M 10
exposant
Signe
b. En binaire
Mantisse
s e
R = (-1) M 2
exposant
Signe
étape 1
S est immédiatement identifiable si le nombre est positif s = 0 si le nombre est négatif s = 1
étape 2
Par division ou multiplication successive on amène le nombre dans l’intervalle de 1 et 2
pour obtenir E
le codage de E sur 8 bits ne sera pas avec le complément à 2 mais on code e
en binaire avec la conversion de E avec
E=127+e
étape 3
l’étape précédente nous donne
M doncc m = M-1
puisque M=1,XXXX il est inutile de conserver le MSB en binaire puisqu’il sera toujours a 1.
on ne codera que les X
exemple et exercice
a) 2023
etape 1 → s=0
code de S=0
etape 2 → M= 2023/2 =1011,5
1011,5/2 =505,75
505,75/2 =252,875
.../2 =126,4375
=63,4375
=31,… conserver la valeur précédente
=15…
=7…
=3
=1,9755859375
E=10
code de E=127+e donc E=127+10=137
code de E=1000 1001
on recherche
x
R=2
b b .ln a
en sachant que a =e
x .ln 2
R=e
en sachant que sia=b alors ln a=ln b
x. ln 2
ln R=ln ( e )
b
en sachant que ln (a )=b . ln a
ln R=(x . ln (2)). ln e
en sachant que ln (e)=1
ln R=x . ln(2)
on obtient alors x
ln R ln 2023
x= pour notre exemple exp= =10 ,98
ln2 ln 2
R
donc M= exp
2
2023
M= 10
=1,9755859375
2
ps si on fait le choix de la valeur max de ex (11) on trouvera M=0,11 hors la valeur M doit
être comprise entre 1 et 2, pour une meilleur précision.
etape3 → m=M-1=0,9755859375
codage de m
avec la méthode du tableau…..
rang -1 -2 -3
poids 0,5 0,25 0,125
binaire 1 1 1
reste 0,4755859375 0,2255859375 0,1005859375
Je vous rappel que m est coder sur 23 bits minimum… il ne vous reste plus qu’a faire les 20
suivants… bonne chance
Fort heureusement il existe le même principe que la division successive, qui ici risque
d’avoir pour une fois la préférence de beaucoup ! Mais cette fois les exposants sont négatif
donc nous serons en présence de multiplication par 2 et non de division. Si la partie entière
du résultat est non nul c’est donc que le bit de ce rang est à 1 Le travail est terminé en si on
atteint de dernier bit (23 dans le cas d’une précision simple), dans le pire des cas. Dans le
meilleur on trouve 0 donc m aura un codage fini. Avec une chance intermédiaire on
observera un cycle.
rang valeur
-1 1 0,9755859375*2=1,951171875
-2 1 0,951171875*2=1,90234375
-3 1 0,90234375*2=1,8046875
-4 1 0,8046875*2= 1,609375
-5 1 0,609375*2= 1,21875
-6 0 0,21875*2=0,4375
-7 0 0,4375*2= 0,875
-8 1 0,875*2= 1,75
-9 1 0,75*2= 1,5
-10 1 0,5*2=1
-11 0 0*2=0
... 0 0
-23 0 0
Code de m=1 1 1 1 1 0 0 1 1 1 0 0 0 0…
a) -0,2023
etape 1 → s=1
code de S=1
etape 2 → M= 0,2023*2 =0,4046
0,4046*2 =0,8092
0,8092*2 =1,6184
E=-3
code de E=127+e donc E=127-3=124
code de E=0111 1100
etape3 → m=M-1=0,6184
codage de m
avec la méthode du tableau…..
rang -1 -2 -3
poids 0,5 0,25 0,125
binaire 1 1 1
reste 0,1184 0 0
Je vous rappel que m est coder sur 23 bits minimum… il ne vous reste plus qu’a faire les 20
suivants… bonne chance
Fort heureusement il existe le même principe que la division successive, qui ici risque
d’avoir pour une fois la préférence de beaucoup ! Mais cette fois les exposants sont négatif
donc nous serons en présence de multiplication par 2 et non de division. Si la partie entière
du résultat est non nul c’est donc que le bit de ce rang est à 1 Le travail est terminé en si on
atteint de dernier bit (23 dans le cas d’une précision simple), dans le pire des cas. Dans le
meilleur on trouve 0 donc m aura un codage fini. Avec une chance intermédiaire on
observera un cycle.
rang valeur
-1 1 0,6184*2=1,2368
-2 1 0,2368*2=0,4736
-3 1 0,4736*2=0,9472
-4 1 0,9472*2= 1,8944
-5 1 0,8944*2= 1,7888
-6 0 0,7888*2=1,5776
-7 0 0,5776*2= 1,1552
-8 1 0,1552*2= 0,3104
-9 1 0,3104*2= 0,6208
-10 1 0,6208*2=1,2416
-11 0 0,2416*2= 0,4832
... 0 ...
-23 0 ...
b)
c)
d)