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

Sif-10531 Cours 3 n 2. Représentation et traitement des informations u Représentation des nombres réels u Opérations sur les nombres réels u Fonctions.

Présentations similaires


Présentation au sujet: "Sif-10531 Cours 3 n 2. Représentation et traitement des informations u Représentation des nombres réels u Opérations sur les nombres réels u Fonctions."— Transcription de la présentation:

1 sif Cours 3 n 2. Représentation et traitement des informations u Représentation des nombres réels u Opérations sur les nombres réels u Fonctions logiques et algèbre booléenne u Opérations sur les bits u Travail pratique #1 F Epsilon dune machine F Propagation des erreurs n Le matériel u Chapitre 2 CSA u Synthèse du professeur

2 sif Représentation en virgule flottante n La norme IEEE 754 u Établi en 1985 comme norme uniforme de larithmétique en point flottant F Avant, plusieurs formats existaient u Implémenté sur la plupart des CPUs n Représentation des réels courts (32 bits) selon la norme de lIEEE 754 S Caractéristique Mantisse

3 sif Représentation en virgule flottante n Représentation des réels longs (64 bits) selon la norme de lIEEE 754 S Caractéristique Mantisse

4 sif Représentation en virgule flottante n Un réel court est dit normalisé quand: u Condition C 000 … 0 et C 111 … 1 u Exposant est codé sous forme dexcédent E = C – Bias => C = E + Bias C : valeur unsigned F Bias : valeur du bias ou de lexcé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 = 2 m-1 - 1, ou m est le nombre de bits de la caractéristique n Mantisse codé avec un 1 implicite M = 1.xxx … x 2 xxx … x : bits de la partie fractionnaire Minimum quand 000 … 0 (M = 1.0) Maximum quand 111 … 1 (M = 2.0 – ) F Le bit implicite nest pas storé en mémoire

5 sif Représentation en virgule flottante n 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

6 sif Représentation en virgule flottante n Représentation sous forme dun réel court du nombre Après normalisation

7 sif Représentation en virgule flottante n Représentation sous forme dun réel court du nombre Mantisse avec le 1 implicite Exposant Mantisse entreposée Caractéristique

8 sif Représentation en virgule flottante n Représentation sous forme dun réel court du nombre

9 sif Représentation en virgule flottante n Un réel court est dit dénormalisé quand: u Condition C = 000 … 0 u Valeur E = -Bias +1 M = 0.xxx … x 2 u Cas C = 000 … 0, M = 000 … 0 Représente la valeur 0 F 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

10 sif Représentation en virgule flottante n Valeurs spéciales u Condition C = 111 … 1 u 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),

11 sif Représentation en virgule flottante n Sommaire de lencodage des nombres réels

12 sif Représentation en virgule flottante n Sommaire de lencodage des nombres réels

13 sif Représentation en virgule flottante n Sommaire de lencodage des nombres réels

14 sif Représentation en virgule flottante n Sommaire de lencodage des nombres réels

15 sif Opérations en virgule flottante n Approche conceptuelle u Calculer en premier le résultat exacte u Convertir le résultat dans la représentation appropriée F Possibilité de débordement si lexposant est trop gros F Possibilité darrondi pour cadrer dans la mantisse M n Type darrondi (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

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

17 sif Arrondi de nombres binaires n Nombres fractionnaires binaire n Examples u Arrondi au ¼ près (2 bits à droite du point binaire)

18 sif Opérations en virgule flottante n Addition en virgules flottantes u Considérons laddition de 2 réels chacun avec 15 bits significatifs

19 sif Opérations en virgule flottante n Alignement de b

20 sif Opérations en virgule flottante n Arrondissement du résultat

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

22 sif Nombres réels en C n Deux niveaux de nombres réels float sinple précision double double précision n Conversions Conversion entre des int, float, et double changent les valeurs numériques Double ou float à int F Truncature de la partie fractionnaire F Comme larrondissement rounding toward zero int à double F Conversion exacte int à float F Arrondissement selon le mode darrondi

23 sif 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 >= 0.0 Oui! (d+f)-d == f Non: Non associatif Nombres réels en C int x = …; float f = …; double d = …;

24 sif Ariane 5 u Explosion apès 37 secondes de vol u $500 millions perdus n Pourquoi ??? u V h représentée par des nombres réels u Conversion en short integer (16 bits) u OK pour Ariane 4 u Overflow pour Ariane 5 F Même code utilisé

25 sif Fonctions logiques et algèbre booléenne n Cest vers le milieu du 19ième siècle que le mathématicien et logicien anglais George Boole publie son traité dalgèbre intitulé: Investigation des lois du raisonnement sur lesquelles reposent la théorie mathématique de la logique et les probabilités. n Il faut par contre attendre près dun siècle avant que lon trouve des applications pratiques à cette théorie.

26 sif n Lalgèbre de Boole est une algèbre applicable aux raisonnements sur des propositions logiques, une proposition peut être vraie ou fausse, ce que lon peut noter par 1 ou 0. n En électronique, le courant électrique passe ou ne passe pas, ce que lon peut noter également par 1 ou 0. En fait cest sur ce concept fondamental, pour le moins assez simple, que sont construits tous les ordinateurs électroniques.

27 sif Variable Booléenne n Puisquune variable de Boole ne peut prendre que deux valeurs, 0 ou 1, nous pouvons écrire: si A différent de 0 ==> A = 1 si A différent de 1 ==> A = 0

28 sif n On associe souvent la notation de variable booléenne à un interrupteur ouvert ou fermé. Supposons que la valeur 1 soit associée à linterrupteur fermé et 0 à linterrupteur ouvert. En admettant la présence dune tension au point E, nous avons une tension au point S dans la mesure où A = 1. Si A = 0 (interrupteur ouvert), il ny a pas de tension en S.

29 sif Complémentation dune variable booléenne n Étant donnée la dualité inhérente à toute lalgèbre de Boole, la notion de complémentation dune variable ou dune expression est immédiate, nous appelons complément dune variable ou dune expression lopposé en algèbre de Boole de cette variable ou de cette expression. Lopération de complémentation peut donc être représentée par le tableau ci-dessous. n ~A = 1 quand A=0 VariableComplément AA (ou A) 01 10

30 sif n Nous voyons donc que si la variable A est associée à un interrupteur ouvert pour la valeur 0 et fermé pour la valeur 1, la variable A est associée à un interrupteur mécaniquement lié au premier, mais ouvert quand A = 1 et fermé quand A = 0

31 sif La somme logique n La notion de somme logique (à ne pas confondre avec la somme algébrique) peut être associée à des interrupteurs en parallèle. En associant à la présence dune tension en un point la valeur logique 1, et à son absence la valeur logique 0, nous obtenons: S=0, si A=0 et B=0 simultanément; S=1, si A=1 ou B=1(ou les deux).

32 sif n Cette opération de somme logique est indiquée par le signe +. Nous écrivons donc: S = A + B n Le + logique (que nous ne devons pas confondre avec le + de lalgèbre classique) correspond assez bien à la dénomination OU : nous avons une tension en S si les interrupteurs A OU B (ou les deux) sont fermés. n A | B = 1 quand A = 1 ou B = 1

33 sif n Par analogie avec la table daddition classique, nous pouvons établir une table daddition logique

34 sif Le produit logique n Nous avons vu dans le paragraphe précédent que la notion de somme logique se rapproche de celle dinterrupteurs en parallèle. De la même façon, nous associons la notion de produit logique à celle dinterrupteurs placés en série S=0, si A=0 ou B=0; S=1, si A=1 et B=1simultannément.

35 sif n Cette opération de produit logique est notée: S = A x B (ou A.B ou AB) n Le x logique (que nous ne devons pas confondre avec le x de lalgèbre classique) correspond assez bien à la dénomination ET : nous avons une tension en S si les interrupteurs A et B sont fermés. n A & B = 1 quand A = B = 1

36 sif n Par analogie avec la table de multiplication classique, nous pouvons établir une table de multiplication logique. x

37 sif Le OU-EXCLUSIF (Xor) n A^B = 1 quand A=1 ou B=1 mais A != B

38 sif Identités utiles en algèbre Booléenne

39 sif Exemples n Opérations sur plusieurs bits u Opérations appliquées bit à bit & | ^ ~

40 sif Opérations sur les bits en C Opérations &, |, ~, ^ disponibles en C Applicable à plusieurs types de données –long, int, short, char Voir les opérandes comme des suites de bits Opérations bit à bit Exemples (char) ~0x41 --> 0xBE ~ > ~0x00 --> 0xFF ~ > x69 & 0x55 --> 0x & > x69 | 0x55 --> 0x7D | >

41 sif Opérations logiques en C VERSUS Opérations sur les bits Opérateurs Logiques && (ET logique), || (OU logique), ! (NON logique) –Voir 0 comme FAUX – Tout ce qui est différent de 0 est VRAI –Retourne 0 ou 1 Exemples (char) !0x41 --> 0x00 (NOT VRAI = FAUX) !0x00 --> 0x01 (NOT FAUX = VRAI) !!0x41 --> 0x01 0x69 && 0x55 --> 0x01 0x69 || 0x55 --> 0x01 x = 100 y = 50 xx = 120 yy = 130 (x >= y) && (xx == yy) 0x00

42 sif Résumé des opérateurs en C u Opérateurs –Arithmétiques » +, += /* addition, addition et affectation */ » -, -= /* soustraction, soustraction et affectation */ » *, *= /* multiplication, multiplication et affectation */ » /, /= /* division, division et affectation */ » %, %= /* reste de la division entière (modulo), modulo et affectation */ » ++ /* incrémentation a++, ++a */ » -- /* décrémentation a--, --a */ –Relationnels » <, <= /* plus petit, plus petit ou égal */ » >, >= /* plus grand, plus grand ou égal */ » ==, != /* égal ou différent */ –Logiques » ! /* complément (non) */ » && /* et */ » | | /* ou */

43 sif Résumé des opérateurs en C u Opérateurs –Logiques bitwise (sur des bits) » ~ /* complément à 1 */ » &, &= /* et logique, et logique et affectation */ » |, |= /* ou logique, ou logique et affectation */ » ^, ^= /* ou exclusif, ou exclusif et affectation */ » >>, >>= /* décalage à droite, décalage à droite et affectation */ » <<, <<= /* décalage à gauche, décalage à gauche et affectation */

44 sif Epsilon de la machine et nombre de chiffres significatifs dune représentation u Lorsque nous effectuons laddition de 2 nombres réels le plus petit des 2 est décalé ce qui occasionne une perte de précision u Dans des cas extrêmes il peut arriver que le plus petit nombre nai aucune signifiance dans le calcul, ayant été décalé complètement vers la droite u Le nombre de décalages maximum que peut subir un nombre avant quil nai plus de signifiance correspond au nombre de chiffres significatifs de la représentation

45 sif Epsilon de la machine et nombre de chiffres significatifs dune représentation u Le plus petit nombre signifiant dune représentation est appelé epsilon de la machine u Ce nombre représente la plus petite valeur de x pour laquelle 1+x>1

46 sif Epsilon de la machine et nombre de chiffres significatifs dune représentation u Algorithme qui trouve le epsilon de la machine et le nombre de chiffres significatifs (cas binaire) eps=1 n=0 unpluseps = 1 + eps TTQ unpluseps>1 FAIRE eps = eps/2 unpluseps = 1 + eps n++ FIN TTQ eps = eps * 2 n = n-1 imprimer eps et n

47 sif Propagation des erreurs u Lorsque une opération telle que laddition est répétée il peut survenir un phénomène de propagation des erreurs darrondi u Alors la sommation suivante peut dans certain cas ne pas donner 1

48 sif Propagation des erreurs u De plus, lordre des sommations a aussi une influence sur la propagation des erreurs u Par conséquent les 2 sommations suivantes devraient donner la même valeur mais ce nest pas le cas quand N est le moindrement grand

49 sif Propagation des erreurs u 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)

50 sif Propagation des erreurs u Algorithme de sommation ascendant somme = 0 POUR i = 1 à N par saut de 1FAIRE somme = somme + 1/i n FIN POUR imprimer somme

51 sif Propagation des erreurs u Algorithme de sommation descendant somme = 0 POUR i = N à 1 par saut de -1 FAIRE somme = somme + 1/i n FIN POUR imprimer somme

52 sif Éléments de programmation en C u Entrées/Sorties –Des symboles de formattage sont utilisés comme arguments aux fonctions dI/O (ex: lecture au clavier et écriture à lécran) »%d /* formattage dun nombre décimal */ »%i /* formattage dun nombre décimal */ »%f /* formattage dun nombre réel */ »%c /* formattage dun caractère */ »%s /* formattage dune chaîne de caractères */ »%ld /* formattage dun nombre entier long */ »%lf /* formattage dun nombre réel long */

53 sif Éléments de programmation en C u 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 */

54 sif Éléments de programmation en C u Structures de contrôle (Boucles) –Boucle while while(condition){} – Par exemple: iter =10; i=res=0; a = 12.5; while(i

55 sif Éléments de programmation en C u Exemple de programme (somme successive de termes puissances) Voir projet calculPOW

56 sif Éléments de programmation en C u Exemple de programme (somme successive de termes puissances) Ajouter ces lignes dans le fichier StdAfx.h

57 sif Éléments de programmation en C u Exemple de programme (somme successive de termes puissances) Exécution du programme


Télécharger ppt "Sif-10531 Cours 3 n 2. Représentation et traitement des informations u Représentation des nombres réels u Opérations sur les nombres réels u Fonctions."

Présentations similaires


Annonces Google