Chapitre 10 Arithmétique réelle

  • View
    221

  • Download
    0

Embed Size (px)

Text of Chapitre 10 Arithmétique réelle

  • Chapitre 10Arithmtique relle

    Jean PrivatUniversit du Qubec Montral

    INF2170 Organisation des ordinateurs et assembleurAutomne 2013

    Jean Privat (UQAM) 10 Arithmtique relle INF2170 Automne 2013 1 / 26

  • Plan

    1 Arithmtique informatique

    2 Norme IEEE 754

    3 Valeurs spciales IEEE 754

    4 Perte de prcision

    Jean Privat (UQAM) 10 Arithmtique relle INF2170 Automne 2013 2 / 26

  • Plan

    1 Arithmtique informatique

    2 Norme IEEE 754

    3 Valeurs spciales IEEE 754

    4 Perte de prcision

    Jean Privat (UQAM) 10 Arithmtique relle INF2170 Automne 2013 3 / 26

  • Binaire rationnels

    Nombres virguleAvant la virgule : des puissances positives de la baseAprs la virgule : des puissances ngatives

    Exemples10, 2510 = 1 10+ 2 101 + 5 102

    1010, 012 = 23 + 21 + 22

    Jean Privat (UQAM) 10 Arithmtique relle INF2170 Automne 2013 4 / 26

  • Reprsentation des nombresEntiers

    Entiers en point fixeSigns ou non signs

    FlottantsLa place de la virgule nest pas fixe

    AutresBinaire cod dcimal (historique)Gros entiers (langages volues, logiciels spcialiss)Reprsentation symbolique (idem)

    Jean Privat (UQAM) 10 Arithmtique relle INF2170 Automne 2013 5 / 26

  • Reprsentation des flottantsForme dcimale des rationnels

    Un signeUne partie entireUne partie fractionnaireExemple : 12.9, 0.000419, -17.19

    Forme normaliseUn signeLa partie entire est nulleUne partie fractionnaire dont le premier chiffre 6= 0Une puissance de la baseExemples : 0.129 102, 0.49 103, 0.1719 102

    Jean Privat (UQAM) 10 Arithmtique relle INF2170 Automne 2013 6 / 26

  • Plan

    1 Arithmtique informatique

    2 Norme IEEE 754

    3 Valeurs spciales IEEE 754

    4 Perte de prcision

    Jean Privat (UQAM) 10 Arithmtique relle INF2170 Automne 2013 7 / 26

  • Norme IEEE 754Forme normaliss en base 2

    Forme normalis selon 1.f 2e

    f est la partie fractionnaire (ou mantisse)e est lexposant de la puissance de 2

    AttentionLe premier 1 nest pas stock mais est prsentUn bit supplmentaire stocke le signe (pas dereprsentation en complment)Deux reprsentations : simple prcision et doubleprcision

    Jean Privat (UQAM) 10 Arithmtique relle INF2170 Automne 2013 8 / 26

  • Simple prcision (32 bits)Signe (1 bit)

    0 = positif1 = ngatif

    Exposant (8 bits)0016 et FF16 : spcial (plus tard)0116 FE16 : 2126 2127

    7F16 : 20 = 1 (on appelle a le ple)

    Mantisse (23 bits)Reprsentation traditionnelleNe pas oublier le 1, implicite devant

    Jean Privat (UQAM) 10 Arithmtique relle INF2170 Automne 2013 9 / 26

  • Dcimal vers simple prcision

    Exemple17.2510 = 10001.012 = 1.0001012 24

    Soit 1 10000011 00010100000000000000000

    ExercicesConvertir 0.125Convertir 0.2

    Jean Privat (UQAM) 10 Arithmtique relle INF2170 Automne 2013 10 / 26

  • Simple prcision vers dcimal

    Exemple01000001001001000000000000000000signe = 0 positifexposant = 100000102 130 127 = 3mantisse = 01001000000000000000000 1.010012rsultat = +1.010012 23 = 1010.012 = 10.2510

    ExerciceConvertir 01000100100000000000000000000000

    Jean Privat (UQAM) 10 Arithmtique relle INF2170 Automne 2013 11 / 26

  • Plan

    1 Arithmtique informatique

    2 Norme IEEE 754

    3 Valeurs spciales IEEE 754

    4 Perte de prcision

    Jean Privat (UQAM) 10 Arithmtique relle INF2170 Automne 2013 12 / 26

  • Valeurs spciales

    Cas particuliersZroValeurs ngatives trop petitesValeurs ngatives trop proches de zroValeurs positives trop grandesValeurs positives trop proches de zro

    Jean Privat (UQAM) 10 Arithmtique relle INF2170 Automne 2013 13 / 26

  • Valeur zro

    Pas de reprsentation normaliseOn ne peut crire 0 avec un "1," implicite

    Reprsentation dnormaliseSi la mantisse et lexposant sont tous zro, lenombre vaut zro

    Deux zro+0 et -0 ont des reprsentations diffrentes

    Jean Privat (UQAM) 10 Arithmtique relle INF2170 Automne 2013 14 / 26

  • Infini

    Utilis pour les valeurs extrmesMantisse 0Exposant FF16Le signe indique + ou

    Jean Privat (UQAM) 10 Arithmtique relle INF2170 Automne 2013 15 / 26

  • Nombres dnormaliss

    Nombres proches de 0La mantisse na plus un "1," implicite mais un "0,"Lexposant est 0016 (vaut 2126)

    Exemple0 0000000 00000000000000000000001vaut +0, 00000000000000000000001 2126

    (soit 2149, de lordre de 1045)

    Jean Privat (UQAM) 10 Arithmtique relle INF2170 Automne 2013 16 / 26

  • Pas des nombres

    NaN (not a number)Reprsente des rsultats erronesRacine carr dun ngatif

    CodageSigne quelconqueExposant FF16Mantisse 6= 0

    Jean Privat (UQAM) 10 Arithmtique relle INF2170 Automne 2013 17 / 26

  • Table rcapitulative

    Type Exposant MantisseZros 0 0Dnormaliss 0 6= 0Normaliss 0116 FE16 libreInfinis FF16 0NaN FF16 6= 0

    Jean Privat (UQAM) 10 Arithmtique relle INF2170 Automne 2013 18 / 26

  • Double prcision (64 bits)

    Pareil mais plus grandSigne : 1 bitExposant : 11 bitsPle : 1023 (3FF16)Mantisse : 52 bits

    AujourdhuiPersonne nutilise les simple prcision (float)Tout le monde utilise des double prcision (double)

    Jean Privat (UQAM) 10 Arithmtique relle INF2170 Automne 2013 19 / 26

  • Plan

    1 Arithmtique informatique

    2 Norme IEEE 754

    3 Valeurs spciales IEEE 754

    4 Perte de prcision

    Jean Privat (UQAM) 10 Arithmtique relle INF2170 Automne 2013 20 / 26

  • Perte de prcision

    ProblmeOn ne peut reprsenter tous les rationnelsIl y a donc des valeurs non reprsentablesContrairement aux entiers, ces valeurs ne sont pasquaux extrmites

    Travailler avec des flottantsSavoir que les flottants ne sont pas prcisSavoir comment minimiser limpact de cetteimprcision

    Jean Privat (UQAM) 10 Arithmtique relle INF2170 Automne 2013 21 / 26

  • Reprsentation infinieRationnels infinis

    Certains rationnels ont une reprsentation finie endcimal mais infinie en binaireExemple : 0.210

    TronquageOn tronque la mantisseExemple : 0.2 sera reprsent par0.20000000298023223876953125

    Cette perte dinformation se combine0.37 + 0.2 = ?

    Jean Privat (UQAM) 10 Arithmtique relle INF2170 Automne 2013 22 / 26

  • Valeurs incommensurables

    Les gros mangent les petitsAdditionner (soustraire) deux flottants de magnitudestrs diffrentes nest pas une bonne ide

    Exemple1E15 + 1E-15 = ?

    SolutionTraiter les nombres par groupe de magnitude

    Jean Privat (UQAM) 10 Arithmtique relle INF2170 Automne 2013 23 / 26

  • Comparaison

    Comparer cest se tromperLa comparer par lgalit de deux flottants nest pasrobuste0.37 + 0.2 - 0.57 == 0 ?

    SolutionComparer les distanceMath.abs(0.37 + 0.2 0.57) < epsilono epsilon est une constante (petite) smantique auprogramme

    Jean Privat (UQAM) 10 Arithmtique relle INF2170 Automne 2013 24 / 26

  • Variations architecturales

    ProcesseursDes processeurs ne respectent pas IEEE 754Exemple : les processeurs Intel stockent les flottantssur 80 bits (plus de prcision)

    EffetEn fonction du processeur, un programme peut avoirdes rsultats diffrents

    Jean Privat (UQAM) 10 Arithmtique relle INF2170 Automne 2013 25 / 26

  • Utiliser la bonne reprsentationEntiers exacts

    Utiliser des entiers processeur si les entiers sont petitsUtiliser des bibliothques si les entiers sont grands

    Dcimaux exactsUtiliser des entiers aussiExemple : stocker les prix en cents avec un entier

    Dcimaux largesUtiliser des doublesPrudence vis--vis de la perte de prcisionNe faire confiance personne

    Jean Privat (UQAM) 10 Arithmtique relle INF2170 Automne 2013 26 / 26

    Arithmtique informatiqueNorme IEEE 754Valeurs spciales IEEE 754Perte de prcision