Transcript
Page 1: Chapitre 10 Arithmétique réelle

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

Page 2: Chapitre 10 Arithmétique réelle

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

Page 3: Chapitre 10 Arithmétique réelle

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

Page 4: Chapitre 10 Arithmétique réelle

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

Page 5: Chapitre 10 Arithmétique réelle

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

Page 6: Chapitre 10 Arithmétique réelle

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

Page 7: Chapitre 10 Arithmétique réelle

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

Page 8: Chapitre 10 Arithmétique réelle

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

Page 9: Chapitre 10 Arithmétique réelle

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

Page 10: Chapitre 10 Arithmétique réelle

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

Page 11: Chapitre 10 Arithmétique réelle

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

Page 12: Chapitre 10 Arithmétique réelle

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

Page 13: Chapitre 10 Arithmétique réelle

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

Page 14: Chapitre 10 Arithmétique réelle

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

Page 15: Chapitre 10 Arithmétique réelle

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

Page 16: Chapitre 10 Arithmétique réelle

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

Page 17: Chapitre 10 Arithmétique réelle

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

Page 18: Chapitre 10 Arithmétique réelle

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

Page 19: Chapitre 10 Arithmétique réelle

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

Page 20: Chapitre 10 Arithmétique réelle

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

Page 21: Chapitre 10 Arithmétique réelle

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

Page 22: Chapitre 10 Arithmétique réelle

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

Page 23: Chapitre 10 Arithmétique réelle

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

Page 24: Chapitre 10 Arithmétique réelle

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

Page 25: Chapitre 10 Arithmétique réelle

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

Page 26: Chapitre 10 Arithmétique réelle

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