Les nombres à virgule flottante 1 Représentation Il existe un nombre fini dentiers dans lintervalle Il y a cependant une infinité de nombres réels dans le même intervalle Comment représenter une infinité de ID: 493093
Download Presentation The PPT/PDF document "Chapitre 11" is the property of its rightful owner. Permission is granted to download and print the materials on this web site for personal, non-commercial use only, and to display it on your personal computer provided you do not modify the materials and that you retain all copyright notices contained in the materials. By downloading content from our website, you accept the terms of this agreement.
Slide1
Chapitre 11
Les nombres à virgule flottante
1Slide2
Représentation
Il existe un nombre fini
d’entiers dans
l’intervalle
Il y a cependant une infinité de nombres réels dans le même intervalleComment représenter une infinité de nombres?On approxime la plupart des nombres réels de l’intervalleCette approximation doit permettreUne bonne approximation des nombres réels non représentablesD’exprimer de très grands nombres réelsD’exprimer de très petits nombres réels
2Slide3
Représentation
Les points flottants
Une mantisse (
)
Une base ()Un exposant (
)
Un ensemble F de nombres virgule flottante s’exprime
est la base
est le nombre de symboles de la mantisse () est l’exposant minimal est l’exposant maximal
3
Slide4
F=(B, l, m, M)
Nombre virgule flottante normalisé
Nombre pour lequel
La normalisation permet de mieux estimer la précision
4
est non normalisé
est normalisé
Slide5
F=(B, l, m, M)
Valeur absolue du plus petit nombre
Valeur absolue du plus grand nombre
5
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=Slide6
F=(B, l, m, M)
Précision
relative
Un nombre à virgule flottante est une approximation d’un réel
Il y a nécessairement perte de précisionIl y a une erreur lors du calcul, versus le même calcul avec des réelsL’estimation de la précision relative est Cardinalité
6
Autant de négatifs que de positifs
On compte le nombre zéroB-1 possibilité pour le premier chiffre de la mantisse
B possibilités pour chacun des l-1 autres chiffres
Valeurs possibles pour l’exposantSlide7
F=(B, l, m, M)
Exemple
:
F=(2, 3, 1, 2)
Distance entre deux éléments, dans un intervalle de puissance de 2 voisines7
3
2
1
0
-1
-2
-3Slide8
Représentation interne
Exemple
:
F=(10, 5, 9, 9)
8
Signe de la mantisse
Signe de l’exposant
Exposant (0 à 9)
Mantisse
Slide9
Représentation interne
Exemple
:
F=(10, 5, 9, 9)
9
Signe de la mantisse
Exposant biaisé(00 à 99)
Mantisse
On ajoute un biais de 50 à l’exposantSlide10
Norme IEEE754
S’appuie sur la représentation précédente
Exposant biaisé (sur 8 bits)
0 et 255 sont des valeurs réservées254 valeurs possibles le biais est donc de 127
10
Précision
TailleSigneExposant biaiséMantisseSimple32 bits1 bit8 bits23 bitsDouble64 bits1 bit11 bits52 bitsQuadruple128 bits1 bit15 bits112 bits
S
Exposant
Mantisse
0
22
23
30
31
s
e
fSlide11
Norme IEEE754
Valeur d’un nombre normalisé
Si
est 0, le -1 disparait, sinon, il reste
Le nombre est normalisé, il commence toujours par 1
Inutile de le représenterLa mantisse est seulement les chiffres après la virgule
11
Slide12
Norme IEEE754
Valeur d’un nombre non normalisé (
e=0
)
Le nombre n’est plus normalisé, il ne commence donc plus nécessairement par 1On ne peut plus le cacher12
devient
(
bf
devient la nouvelle mantisse)
Slide13
Norme IEEE754
Représentation de
0
Représentation de l’
infiniLe bit de signe indique si c’est
Obtenu, entre autres, lors d’une division par 0
13Slide14
Norme IEEE754
Représentation de
NaN
(
Not a Number)Si le premier bit de la mantisse est1 Provoque une erreur d’exécution0 Ne provoque pas d’erreur, la valeur est propagéeObtenu lors d’opération comme
14Slide15
Norme IEEE754
Valeur minimale et maximale
Nombres normalisés
Nombres non normalisés
15
=
0
11111110 11…11= 0 00000001 00…00
=
0
11111110 11…11
= 0 00000001 00…00
=
0
00000000 11…11
= 0 00000000 00…01
=
0
00000000 11…11
= 0 00000000 00…01Slide16
Unité virgule flottante
Possède
32 registres simple précision
F0
à F3132 registres double précisionF0, F2, …, F6216 registres de quadruple précisionF0, F4, …, F60Tous les registres sont globaux et accessibles en tout tempsIls ne font partie d’aucune fenêtre de registres16Slide17
Unité virgule flottante
Un registre FSR (64 bits)
17
Nom
BitsDescription38:63réservé
fcc336:37codes de condition
fcc2
34:35
codes de conditionfcc132:33codes de conditionRD30:31direction de l’arrondi28:29réservéTEM23:27erreurs détectablesNS22représentation non standard20:21réservéver17:19version de l’unitéftt14:16cause de l’exception
qne13interruptions logiques en attente
12réservé
fcc010:11codes de conditionaexc5:9exceptions accumulées
cexc
0:4
instruction ayant causé une
exceptionSlide18
Unité virgule flottante
Un registre FSR (64 bits)
Le champ d’intérêt est le
fcc0
(bits 10 et 11)18
1er opérande = 2
ème
opérande
1er opérande < 2e opérande1er opérande > 2e opérandeopérande non comparables (Nan)
1
er opérande = 2
ème opérande1er opérande < 2e
opérande
1
er
opérande > 2
e
opérande
opérande non comparables (Nan)Slide19
Instructions
On peut aussi charger des valeurs de la mémoire dans les registres virgule flottante
En fait, on ne peut pas copier directement la valeur d’un registre R vers un registre F!
On passe par la mémoire
19ld
Charge une valeur simple précision
ldd
Charge une valeur double précision
ldqCharge une valeur quadruple précisionstStocke une valeur simple précisionstdStocke une valeur double précisionstqStocke une valeur quadruple précision
ld
[%l1+%l2], %f3Slide20
Instructions
Les instructions arithmétiques sont légèrement modifiées pour prendre en charge les virgules flottantes
Voir annexe C.14 du manuel pour la liste complète
On peut aussi faire des branchements sur les codes condition de l’unité virgule flottante
On ajoute un « f » devant les instructions normales de branchement« bne » devient « fbne »20Slide21
Instructions
Il peut aussi être pratique de changer le format d’une valeur
Par exemple, si la valeur « 48 » est en mémoire, et qu’on veut la multiplier par la valeur « 1,465 »
Il faut transformer la valeur « 48 » d’un entier à un nombre virgule flottante
21
i
entier
s simple précision
d
double précision
q quadruple précision
fitos
%f0, %f1Slide22
Instructions
Pour déclarer des données en virgule flottante
22
.
align
4
s:
.skip 4
.align 8d:.skip 8
.
align
4s:
.single 0r12.34
.
align
8
d:
.double 0r56.78
.
align
16
q:
.quad 0r90.12