La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

Nombres réels Représentation et traitement des informations

Présentations similaires


Présentation au sujet: "Nombres réels Représentation et traitement des informations"— Transcription de la présentation:

1 Nombres réels Représentation et traitement des informations
17/02/2018 Représentation et traitement des informations Représentation des nombres réels Opérations sur les nombres réels Epsilon d’une machine Propagation des erreurs Le matériel Chapitre 2 CSA Synthèse du professeur sif-1053

2 Représentation en virgule flottante
17/02/2018 La norme IEEE 754 Établi en 1985 comme norme uniforme de l’arithmétique en point flottant Avant, plusieurs formats existaient Implémenté sur la plupart des CPUs Représentation des réels courts (32 bits) selon la norme de l’IEEE 754 S Caractéristique Mantisse sif-1053

3 Représentation en virgule flottante
17/02/2018 Représentation des réels longs (64 bits) selon la norme de l’IEEE 754 S Caractéristique Mantisse sif-1053

4 Représentation en virgule flottante
17/02/2018 Un réel court est dit normalisé quand: Condition C  000…0 et C  111…1 Exposant est codé sous forme d’excédent  E = C – Bias => C = E + Bias C : valeur unsigned Bias : valeur du bias ou de l’excédent Simple précision: 127 (C: 1…254, E: -126…127) Double précision: 1023 (C: 1…2046, E: -1022…1023) En général: Bias = 2k-1 - 1, où k est le nombre de bits de la caractéristique Mantisse codé avec un 1 implicite  M = 1.xxx…x2  xxx…x: bits de la partie fractionnaire Minimum quand 000…0 (M = 1.0) Maximum quand 111…1 (M = 2.0 – ) Le bit implicite n’est pas stocké en mémoire sif-1053

5 Représentation en virgule flottante
17/02/2018 Un réel court normalisé en virgule flottante (S,C,M) a sa valeur décimale N donnée par S: bit de signe C: caractéristique M: mantisse sif-1053

6 Représentation en virgule flottante
17/02/2018 Représentation sous forme d’un réel court du nombre Après normalisation sif-1053

7 Représentation en virgule flottante
17/02/2018 Représentation sous forme d’un réel court du nombre Mantisse avec le 1 implicite Exposant Mantisse entreposée Caractéristique sif-1053

8 Représentation en virgule flottante
17/02/2018 Représentation sous forme d’un réel court du nombre sif-1053

9 Représentation en virgule flottante
17/02/2018 Un réel court est dit dénormalisé quand: Condition C = 000…0 Valeur E = -Bias +1 M = 0.xxx…x2 Cas C = 000…0, M = 000…0 Représente la valeur 0 Valeurs +0 et –0 possibles C = 000…0, M  000…0 Nombres très proches de 0.0 Perte de précision plus le nombre devient petit Underflow graduel sif-1053

10 Représentation en virgule flottante
17/02/2018 Valeurs spéciales Condition C = 111…1 Cas C = 111…1, M = 000…0 Représente (infinity) Opération qui donne un débordement Autant positif que négatif Ex: 1.0/0.0 = 1.0/0.0 = +, 1.0/0.0 =  C = 111…1, M  000…0 Not-a-Number (NaN) Représente les cas ou aucune valeur numérique ne peut être déterminée Ex: sqrt(–1),  sif-1053

11 Représentation en virgule flottante
17/02/2018 Sommaire de l’encodage des nombres réels sif-1053

12 Représentation en virgule flottante
17/02/2018 Sommaire de l’encodage des nombres réels sif-1053

13 Représentation en virgule flottante
17/02/2018 Sommaire de l’encodage des nombres réels sif-1053

14 Représentation en virgule flottante
17/02/2018 Sommaire de l’encodage des nombres réels sif-1053

15 Opérations en virgule flottante
17/02/2018 Approche conceptuelle Calculer en premier le résultat exacte Convertir le résultat dans la représentation appropriée Possibilité de débordement si l’exposant est trop gros Possibilité d’arrondi pour cadrer dans la mantisse M Type d’arrondi (exemple en $) $1.40 $1.60 $1.50 $2.50 –$1.50 Round toward Zero $1.00 $1.00 $1.00 $2.00 –$1.00 Round down (-) $1.00 $1.00 $1.00 $2.00 –$2.00 Round up (+) $2.00 $2.00 $2.00 $3.00 –$1.00 Nearest (default) $1.00 $2.00 $2.00 $2.00 –$2.00 sif-1053

16 Round-To-Nearest Mode d’arrondi par défaut
17/02/2018 Mode d’arrondi par défaut Les autres modes sont statistiquement biasés Des sommes de nombres positifs peuvent être sur- ou sous- estimées Application à d’autres positions décimales Quand nous sommes exactement entre deux valeurs possibles Arrondi de façon à ce que le digit le moins significatif soit pair Ex: arrondi au centième près => 1.23 => 1.24 => 1.24 => 1.24 sif-1053

17 Arrondi de nombres binaires
17/02/2018 Nombres fractionnaires binaire Examples Arrondi au ¼ près (2 bits à droite du point binaire) sif-1053

18 Opérations en virgule flottante
17/02/2018 Addition en virgules flottantes Considérons l’addition de 2 réels chacun avec 15 bits significatifs sif-1053

19 Opérations en virgule flottante
17/02/2018 Alignement de b sif-1053

20 Opérations en virgule flottante
17/02/2018 Arrondissement du résultat sif-1053

21 Opérations en virgule flottante
17/02/2018 Multiplication en virgules flottantes Opérandes (–1)s1 M1 2E1 (–1)s2 M2 2E2 Résultat exact (–1)s M 2E Signe s: s1 ^ s2 Mantisse M: M1 * M2 Exposant E: E1 + E2 Cadrage SI M ≥ 2, décaler M à droite, incrément de E Si E hors des bornes possibles, overflow Arrondir M pour cadrer la représentation sif-1053

22 Nombres réels en C Deux niveaux de nombres réels Conversions
17/02/2018 Nombres réels en C Deux niveaux de nombres réels float simple précision double double précision Conversions Conversion entre des int, float, et double changent les valeurs numériques double ou float à int Truncature de la partie fractionnaire Comme l’arrondissement rounding toward zero int à double Conversion exacte int à float Arrondissement selon le mode d’arrondi sif-1053

23 Nombres réels en C int x = …; float f = …; double d = …;
17/02/2018 int x = …; float f = …; double d = …; x == (int)(float) x Non: 24 bits significatifs x == (int)(double) x Oui: 53 bits significatifs f == (float)(double) f Oui: meilleure précision d == (float) d Non: perte précision f == -(-f); Oui: changement du bit s 2/3 == 2/3.0 Non: 2/3 == 0 d < 0.0 ((d*2) < 0.0) Oui! d > f -f < -d Oui! d * d >= Oui! (d+f)-d == f Non: Non associatif sif-1053

24 Ariane 5 Pourquoi ??? Explosion apès 37 secondes de vol
17/02/2018 Ariane 5 Explosion apès 37 secondes de vol $500 millions perdus Pourquoi ??? Vh représentée par des nombres réels Conversion en short integer (16 bits) OK pour Ariane 4 Overflow pour Ariane 5 Même code utilisé sif-1053

25 Epsilon de la machine et nombre de chiffres significatifs d’une représentation
17/02/2018 Lorsque nous effectuons l’addition de 2 nombres réels le plus petit des 2 est décalé ce qui occasionne une perte de précision Dans des cas extrêmes il peut arriver que le plus petit nombre n’ai aucune signifiance dans le calcul, ayant été décalé complètement vers la droite Le nombre de décalages maximum que peut subir un nombre avant qu’il n’ai plus de signifiance correspond au nombre de chiffres significatifs de la représentation sif-1053

26 Epsilon de la machine et nombre de chiffres significatifs d’une représentation
17/02/2018 Le plus petit nombre signifiant d’une représentation est appelé epsilon de la machine Ce nombre représente la plus petite valeur de x pour laquelle 1+x>1 sif-1053

27 Epsilon de la machine et nombre de chiffres significatifs d’une représentation
17/02/2018 Algorithme qui trouve le epsilon de la machine et le nombre de chiffres significatifs (cas binaire) eps=1 n=0 unpluseps = 1 + eps TQ unpluseps>1 FAIRE eps = eps/2 n++ FIN TQ eps = eps * 2 n = n-1 imprimer eps et n sif-1053

28 Propagation des erreurs
17/02/2018 Propagation des erreurs Lorsque une opération telle que l’addition est répétée il peut survenir un phénomène de propagation des erreurs d’arrondi Alors la sommation suivante peut dans certain cas ne pas donner 1 sif-1053

29 Propagation des erreurs
17/02/2018 Propagation des erreurs De plus, l’ordre des sommations a aussi une influence sur la propagation des erreurs Par conséquent les 2 sommations suivantes devraient donner la même valeur mais ce n’est pas le cas quand N est le moindrement grand sif-1053

30 Propagation des erreurs
17/02/2018 Propagation des erreurs Algorithme de sommation successive saut = 1/N somme = 0 POUR i = 1 à N FAIRE somme = somme + saut FIN POUR imprimer somme et erreur (1-somme) sif-1053

31 Propagation des erreurs
17/02/2018 Propagation des erreurs Algorithme de sommation ascendant somme = 0 POUR i = 1 à N par saut de 1FAIRE somme = somme + 1/in FIN POUR imprimer somme sif-1053

32 Propagation des erreurs
17/02/2018 Propagation des erreurs Algorithme de sommation descendant somme = 0 POUR i = N à 1 par saut de -1 FAIRE somme = somme + 1/in FIN POUR imprimer somme sif-1053

33 Éléments de programmation en C
17/02/2018 Éléments de programmation en C Entrées/Sorties Des symboles de formattage sont utilisés comme arguments aux fonctions d’I/O (ex: lecture au clavier et écriture à l’écran) “%d” /* formattage d’un nombre décimal */ “%i” /* formattage d’un nombre décimal */ “%f” /* formattage d’un nombre réel */ “%c” /* formattage d’un caractère */ “%s” /* formattage d’une chaîne de caractères */ “%ld” /* formattage d’un nombre entier long */ “%lf” /* formattage d’un nombre réel long */ sif-1053

34 Éléments de programmation en C
17/02/2018 Éléments de programmation en C Caractères spéciaux Des caractères spéciaux sont utilisés pour modifier une sortie à l’écran ou pour faciliter la gestion des chaînes de caractères ‘\b’ /* backspace */ ‘\f’ /* saut de page (form feed) */ ‘\n’ /* nouvelle ligne (new line) */ ‘\r’ /* retour de chariot (return) */ ‘\t’ /* tabulation (tab) */ ‘\’’ /* apostrophe */ ‘\”’ /* guillemets */ ‘\0’ /* caractère nul (null) */ ‘\\’ /* barre oblique inversée */ sif-1053

35 Éléments de programmation en C
17/02/2018 Éléments de programmation en C Structures de contrôle (Boucles) Boucle while while(condition){} Par exemple: iter =10; i=res=0; a = 12.5; while(i<iter){ res += (int) a; printf(“\n Dans main() res = %d et a = %5.2f”, res,a); i++; } sif-1053

36 Éléments de programmation en C
17/02/2018 Éléments de programmation en C Exemple de programme (somme successive de termes puissances) sif-1053

37 Éléments de programmation en C
17/02/2018 Éléments de programmation en C Exemple de programme (somme successive de termes puissances) Ajouter ces lignes dans le fichier StdAfx.h sif-1053

38 Éléments de programmation en C
17/02/2018 Éléments de programmation en C Exemple de programme (somme successive de termes puissances) Exécution du programme sif-1053


Télécharger ppt "Nombres réels Représentation et traitement des informations"

Présentations similaires


Annonces Google