Chapitre 10 Arithmétique réelle

Preview:

Citation preview

Chapitre 10Arithmétique réelle

Jean PrivatUniversité du Québec à Montréal

INF2170 — Organisation des ordinateurs et assembleurAutomne 2013

Jean Privat (UQAM) 10 — Arithmétique réelle INF2170 — Automne 2013 1 / 26

Plan

1 Arithmétique informatique

2 Norme IEEE 754

3 Valeurs spéciales IEEE 754

4 Perte de précision

Jean Privat (UQAM) 10 — Arithmétique réelle INF2170 — Automne 2013 2 / 26

Plan

1 Arithmétique informatique

2 Norme IEEE 754

3 Valeurs spéciales IEEE 754

4 Perte de précision

Jean Privat (UQAM) 10 — Arithmétique réelle INF2170 — Automne 2013 3 / 26

Binaire rationnels

Nombres à virguleAvant la virgule : des puissances positives de la baseAprès la virgule : des puissances négatives

Exemples10, 2510 = 1× 10+ 2× 10−1 + 5× 10−2

1010, 012 = 23 + 21 + 2−2

Jean Privat (UQAM) 10 — Arithmétique réelle INF2170 — Automne 2013 4 / 26

Représentation des nombresEntiers

Entiers en point fixeSignés ou non signés

FlottantsLa place de la virgule n’est pas fixe

AutresBinaire codé décimal (historique)Gros entiers (langages évoluées, logiciels spécialisés)Représentation symbolique (idem)

Jean Privat (UQAM) 10 — Arithmétique réelle INF2170 — Automne 2013 5 / 26

Représentation des flottantsForme décimale des rationnels

Un signeUne partie entièreUne partie fractionnaireExemple : 12.9, 0.000419, -17.19

Forme normaliséeUn signeLa partie entière est nulleUne partie fractionnaire dont le premier chiffre 6= 0Une puissance de la baseExemples : 0.129× 102, 0.49× 10−3, −0.1719× 102

Jean Privat (UQAM) 10 — Arithmétique réelle INF2170 — Automne 2013 6 / 26

Plan

1 Arithmétique informatique

2 Norme IEEE 754

3 Valeurs spéciales IEEE 754

4 Perte de précision

Jean Privat (UQAM) 10 — Arithmétique réelle INF2170 — Automne 2013 7 / 26

Norme IEEE 754Forme normalisés en base 2

Forme normalisé selon 1.f × 2e

f est la partie fractionnaire (ou mantisse)e est l’exposant de la puissance de 2

AttentionLe premier 1 n’est pas stocké mais est présentUn bit supplémentaire stocke le signe (pas dereprésentation en complément)Deux représentations : simple précision et doubleprécision

Jean Privat (UQAM) 10 — Arithmétique réelle INF2170 — Automne 2013 8 / 26

Simple précision (32 bits)Signe (1 bit)

0 = positif1 = négatif

Exposant (8 bits)0016 et FF16 : spécial (plus tard)0116 à FE16 : 2−126 à 2127

7F16 : 20 = 1 (on appelle ça le pôle)

Mantisse (23 bits)Représentation traditionnelleNe pas oublier le « 1, » implicite devant

Jean Privat (UQAM) 10 — Arithmétique réelle INF2170 — Automne 2013 9 / 26

Décimal vers simple précision

Exemple−17.2510 = −10001.012 = −1.0001012 ∗ 24

Soit 1 10000011 00010100000000000000000

ExercicesConvertir 0.125Convertir 0.2

Jean Privat (UQAM) 10 — Arithmétique réelle INF2170 — Automne 2013 10 / 26

Simple précision vers décimal

Exemple01000001001001000000000000000000signe = 0 → positifexposant = 100000102 → 130− 127 = 3mantisse = 01001000000000000000000 → 1.010012

résultat = +1.010012 × 23 = 1010.012 = 10.2510

ExerciceConvertir 01000100100000000000000000000000

Jean Privat (UQAM) 10 — Arithmétique réelle INF2170 — Automne 2013 11 / 26

Plan

1 Arithmétique informatique

2 Norme IEEE 754

3 Valeurs spéciales IEEE 754

4 Perte de précision

Jean Privat (UQAM) 10 — Arithmétique réelle INF2170 — Automne 2013 12 / 26

Valeurs spéciales

Cas particuliersZéroValeurs négatives trop petitesValeurs négatives trop proches de zéroValeurs positives trop grandesValeurs positives trop proches de zéro

Jean Privat (UQAM) 10 — Arithmétique réelle INF2170 — Automne 2013 13 / 26

Valeur zéro

Pas de représentation normaliséeOn ne peut écrire 0 avec un "1," implicite

Représentation dénormaliséeSi la mantisse et l’exposant sont tous à zéro, lenombre vaut zéro

Deux zéro+0 et -0 ont des représentations différentes

Jean Privat (UQAM) 10 — Arithmétique réelle INF2170 — Automne 2013 14 / 26

Infini

Utilisé pour les valeurs extrêmesMantisse à 0Exposant à FF16

Le signe indique +∞ ou −∞

Jean Privat (UQAM) 10 — Arithmétique réelle INF2170 — Automne 2013 15 / 26

Nombres dénormalisés

Nombres proches de 0La mantisse n’a plus un "1," implicite mais un "0,"L’exposant est à 0016 (vaut 2−126)

Exemple0 0000000 00000000000000000000001vaut +0, 00000000000000000000001× 2−126

(soit 2−149, de l’ordre de 10−45)

Jean Privat (UQAM) 10 — Arithmétique réelle INF2170 — Automne 2013 16 / 26

Pas des nombres

NaN (not a number)Représente des résultats erronéesRacine carré d’un négatif

CodageSigne quelconqueExposant à FF16

Mantisse 6= 0

Jean Privat (UQAM) 10 — Arithmétique réelle INF2170 — Automne 2013 17 / 26

Table récapitulative

Type Exposant MantisseZéros 0 0Dénormalisés 0 6= 0Normalisés 0116 à FE16 libreInfinis FF16 0NaN FF16 6= 0

Jean Privat (UQAM) 10 — Arithmétique réelle INF2170 — Automne 2013 18 / 26

Double précision (64 bits)

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

Aujourd’huiPersonne n’utilise les simple précision (float)Tout le monde utilise des double précision (double)

Jean Privat (UQAM) 10 — Arithmétique réelle INF2170 — Automne 2013 19 / 26

Plan

1 Arithmétique informatique

2 Norme IEEE 754

3 Valeurs spéciales IEEE 754

4 Perte de précision

Jean Privat (UQAM) 10 — Arithmétique réelle INF2170 — Automne 2013 20 / 26

Perte de précision

ProblèmeOn ne peut représenter tous les rationnelsIl y a donc des valeurs non représentablesContrairement aux entiers, ces valeurs ne sont pasqu’aux extrémitées

Travailler avec des flottantsSavoir que les flottants ne sont pas précisSavoir comment minimiser l’impact de cetteimprécision

Jean Privat (UQAM) 10 — Arithmétique réelle INF2170 — Automne 2013 21 / 26

Représentation infinieRationnels infinis

Certains rationnels ont une représentation finie endécimal mais infinie en binaireExemple : 0.210

TronquageOn tronque la mantisseExemple : 0.2 sera représenté par0.20000000298023223876953125

Cette perte d’information se combine0.37 + 0.2 = ?

Jean Privat (UQAM) 10 — Arithmétique réelle INF2170 — Automne 2013 22 / 26

Valeurs incommensurables

Les gros mangent les petitsAdditionner (soustraire) deux flottants de magnitudestrès différentes n’est pas une bonne idée

Exemple1E15 + 1E-15 = ?

SolutionTraiter les nombres par groupe de magnitude

Jean Privat (UQAM) 10 — Arithmétique réelle INF2170 — Automne 2013 23 / 26

Comparaison

Comparer c’est se tromperLa comparer par l’égalité de deux flottants n’est pasrobuste0.37 + 0.2 - 0.57 == 0 → ?

SolutionComparer les distanceMath.abs(0.37 + 0.2 − 0.57) < epsilonoù epsilon est une constante (petite) sémantique auprogramme

Jean Privat (UQAM) 10 — Arithmétique réelle INF2170 — Automne 2013 24 / 26

Variations architecturales

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

EffetEn fonction du processeur, un programme peut avoirdes résultats différents

Jean Privat (UQAM) 10 — Arithmétique réelle INF2170 — Automne 2013 25 / 26

Utiliser la bonne représentationEntiers exacts

Utiliser des entiers processeur si les entiers sont petitsUtiliser des bibliothèques si les entiers sont grands

Décimaux exactsUtiliser des entiers aussiExemple : stocker les prix en cents avec un entier

Décimaux largesUtiliser des doublesPrudence vis-à-vis de la perte de précisionNe faire confiance à personne

Jean Privat (UQAM) 10 — Arithmétique réelle INF2170 — Automne 2013 26 / 26

Recommended