Vous êtes sur la page 1sur 51

Chapitre 1

Représentation des nombres sur ordinateur

ENSAM-Meknès

Université Moulay Ismail - Meknès

2018/2019

Maths-Info (ENSAM) CMN 1 / 51


1 Introduction

2 Représentation des nombres sur ordinateur

3 Arithmétique flottante

Maths-Info (ENSAM) CMN 2 / 51


Introduction Analyse numérique

L’Analyse Numérique est une spécialité "récente" des mathématiques.


Elle s’est développée avec l’apparition des ordinateurs.
Son objet essentiel est d’écrire les programmes permettant d’effectuer
les opérations nécessaires pour résoudre numériquement un
problème donné.

Les méthodes ont un "coût", lié d’une part au temps de calcul, c’est à
dire au nombre d’opérations élémentaires (additions, soustractions,
multiplications et divisions) à faire, et d’autre part à l’espace mémoire
nécessaire pour stocker les données et les résultats.

L’ordinateur ne fait pas de calculs exacts (à cause du mode de


représentation des nombres). Ceci constitue un inconvénient car cela
provoque des erreurs d’arrondis et de troncature.

Maths-Info (ENSAM) CMN 3 / 51


Introduction Analyse numérique

23 août 1991, Gandsfjorden, Norvège


Une plate-forme de forage de plus de cent mille tonnes coule suite à la
rupture de la paroi des ballasts, provoquant un séisme de magnitude 3
sur l’échelle de Richter ; le coût de la plate-forme est estimé à 700
millions de dollars. Les experts remontent les causes de la
catastrophe jusqu’au logiciel de calcul des éléments finis utilisé pour le
dessin des ballasts. Une approximation de calcul dans ce logiciel a
conduit à une sous-estimation de la taille des parois du balast de 47%.
Compte-tenu de cette sous-estimation, les experts estiment la rupture
probable à partir de 62 m de profondeur. La catastrophe s’est produite
à une profondeur de 65 m.

Maths-Info (ENSAM) CMN 4 / 51


Introduction Analyse numérique

25 février 1991, Dahran, Arabie Saoudite


Un missile Scud irakien détruit un baraquement américain ; 28 morts et
100 blessés. En raison d’une erreur d’arrondi sur le calcul du temps
(au 24ème bit), la batterie de missiles "Patriot" supposée protéger la
base déviait de 0,34 secondes. La vitesse d’un Scud étant de 1676
m/s, l’erreur commise sur la position était donc de plus de 500 m.
Cette distance est suffisante pour que le missile Scud soit hors de la
"fenêtre d’interception" que le missile Patriot poursuivait. Aucun missile
anti-Scud n’a été lancé. Le bug avait été détecté le 11 février. Le
correctif est arrivé à Dahran le 26.

Maths-Info (ENSAM) CMN 5 / 51


Introduction Analyse numérique

4 juin 1996, Kourou, Guyane Française


Après 39 secondes de vol, la fusée Ariane 5 s’auto-détruit avec son
chargement (coût estimé : 500 millions de dollars). La commission
d’enquête a rendu son rapport au bout de deux semaines.
L’autodestruction a été provoquée suite à une correction de l’angle de
vol après qu’une vitesse horizontale importante ait été signalée par le
Système de Référence Inertielle (SRI). En pratique, la vitesse était
normale mais une conversion de "double" (floating point, 64 bits) en
"short" (integer, 16 bits) avait provoquée un dépassement de capacité.

Maths-Info (ENSAM) CMN 6 / 51


Introduction Analyse numérique

Pour un grand nombre de problèmes, le seul moyen de calculer la


solution, si elle existe, est de l’approcher numériquement.

Un algorithme c’est
une démarche pour obtenir une solution (impliquant des
simplifications, ajout/retrait d’hypothèses sur le modèle, etc)
l’implémentation sur ordinateur de cette démarche.

Objectifs de l’analyse numérique :


proposer et développer des algorithmes (méthodes
d’approximation) pour calculer une solution approchée,
contrôler les diverses sources d’erreurs, propres à l’approximation
numérique,
évaluer la pertinence et la valeur de différents algorithmes
(estimer leurs performances) pouvant être utilisés pour résoudre
le même problème afin de sélectionner les meilleurs .
Maths-Info (ENSAM) CMN 7 / 51
Introduction Analyse numérique

Quelques problèmes typiques


Interpolation - Extrapolation.
Résolution de systèmes linéaires.
Résolution de systèmes non-linéaires.
Intégration et différentiation numérique.
Résolution de systèmes d’équations différentielles.
Résolution de systèmes d’EDP.
Analyse statistique.
Transformée de Fourier.
Diagonalisation.
Calcul de valeurs propres. item Calcul de vecteurs propres.
...

Maths-Info (ENSAM) CMN 8 / 51


Introduction Analyse numérique

Langages de programmation
Fortran : Idéal pour le calcul intensif.
C : le plus proche du "hardware".
IDL : Courant en astrophysique.
Java : Indépendant de la machine (portabilité).
Shell : Scripting de base.
Autre : C++, python, Mathematica, etc . . . .
A choisir en fonction de la tache à réaliser, et non en fonction des
habitudes.

Maths-Info (ENSAM) CMN 9 / 51


Introduction Sources d’erreurs

Qu’est-ce qu’un bon algorithme ?


Afin de choisir le meilleur algorithme possible, il faut pouvoir les
comparer. Un bon algorithme est :
le moins coûteux possible en place mémoire,
le moins coûteux possible en temps de calcul : c’est-à-dire qui
minimise le nombre d’opérations nécessaires. C’est ce qu’on
appelle un problème de complexité.
le plus stable possible, ie le moins sensible aux erreurs d’arrondi
que nous venons d’évoquer,
le plus précis possible : la solution approchée obtenue est-elle
proche ou loin de la solution exacte. C’est ce qu’on appelle
l’estimation d’erreur.

Maths-Info (ENSAM) CMN 10 / 51


Introduction Sources d’erreurs

Exemple : Calcul du déterminant d’une matrice N × N


La méthode mathématique de Cramer nécessite N × N! opérations
élémentaires (N! additions et (N − 1) × N! multiplications).
Prenons N = 50, sachant que 50 × 50! = 15.1065 , et qu’un ordinateur
peut faire environ 20 GFlops (ie 20 milliards d’opérations à la
seconde), il faudrait quand même environ 1050 ans pour faire ce calcul.

Maths-Info (ENSAM) CMN 11 / 51


Introduction Sources d’erreurs

Les quatre principales sources d’erreurs :


erreurs de modélisation,
erreurs sur les données,
erreurs dues à la représentation des nombres sur ordinateur,
erreurs de troncature ou de discrétisation.

Exemple 1
Soit la suite définie par : xn+1 = 4xn (1 − xn ) On peut la programmer de
deux façons :
x1 = 4 ∗ x1 ∗ (1.0 − x1 ) ;
x2 = 4 ∗ x2 − 4 ∗ x2 ∗ x2 ;
"Normalement", on doit trouver la même chose "mathématiquement",
mais les opérations ne sont pas faites dans le même ordre en
machine.

Maths-Info (ENSAM) CMN 12 / 51


Introduction Sources d’erreurs

Exemple 2
Soit à résoudre l’équation : x 2 + 2bx − 1 = 0 Où b peut être "très
grand". On demande
√ de calculer la solution positive :
x+ = −b + b2 + 1 Comment faut-il la programmer ? La aussi, deux
possibilités :

x = −b + b ∗ b + 1.0 ;
x= √1.0
b+ b∗b+1.
Équivalentes mathématiquement.

Maths-Info (ENSAM) CMN 13 / 51


Introduction Sources d’erreurs

Exemple 3
Pn 1
Soit à calculer, pour n fixé : Sn = i=1 i Il y a (au moins) deux façons
d’écrire la boucle :
for (i=1 ; i<=n ; i++) x = x + 1.0/i ;
for (i=n ; i>=1 ; i–) x = x + 1.0/i ;
Sans oublier d’initialiser x à 0 évidemment. Ici aussi les
mathématiques sont équivalentes.

Maths-Info (ENSAM) CMN 14 / 51


Introduction Erreurs de modélisation

La modélisation c’est :
L’identification des différents facteurs agissant dans le phénomène
(physique, biologique, économique , etc) à l’étude.
L’identification et réprésentation mathématique des relations entre
les facteurs : écriture des “formules/équations” représentants ces
relations.

Les erreurs de modélisation peuvent provenir de


l’étape de "mathématisation" i.e. simplification ou mauvaise
description de la relation entre différents facteurs lors de la mise
en équations
pour réduire le degré de complexité d’un phénomème physique,
on est souvent amené à simplifier le système d’équations, ce qui
revient à négliger certaines composantes de la réalité physique.
Solution : Un choix convenable du modèle mathématique.

Maths-Info (ENSAM) CMN 15 / 51


Introduction Erreurs sur les données

Les erreurs sur les données proviennent généralement de


l’imprécision des mesures physiques qui sont utilisées dans
l’algorithme.
Solution : Ces erreurs peuvent généralement être réduites en
améliorant la précision des mesures.

Remarque
Il est possible d’étudier l’influence de ces erreurs sur le résultat final,
par exemple à l’aide de la notion de conditionnement (sensibilité aux
erreurs).

Dans la suite de ce cours, nous ne nous intéresserons pas aux erreurs


de modélisation ni à celles sur les données.

Maths-Info (ENSAM) CMN 16 / 51


Représentation des nombres sur ordinateur Erreur relative et erreur absolue

Définition 1
Soit x un nombre réel et x̃ une approximation de x.
L’erreur absolue : ∆x = |x − x̃| (mesure de l’erreur)
∆x
L’erreur relative : (importance de l’erreur).
|x|

Définition 2
Si m est le plus petit entier signé tel que ∆x ≤ 0.5 × 10m alors le
chiffre correspondant à la mième puissance de 10 (et tous ceux à sa
gauche jusqu’au dernier non-nul) sont dit significatifs.
Exception : si le chiffre correspondant est nul ainsi que tous ceux à sa
gauche on dit qu’il n’y a pas de chiffre significatif.
Nombre à N chiffres significatifs : compter vers la droite jusqu’à N à
partir du premier non-nul à gauche. L’erreur absolue est inférieure à la
moitié de la puissance de 10 du dernier chiffre significatif.

Exemple
Maths-Info (ENSAM) CMN 17 / 51
Représentation des nombres sur ordinateur Erreurs de représentation des nombres

L’ordinateur doit représenter les nombres dans un système qui lui


permette d’exécuter les opérations souhaitées efficacement.
La structure interne des ordinateurs s’appuie généralement sur le
système binaire : représentation des nombres en base 2.
Les calculs sont généralement effectués en base 2, et les
interactions avec l’usager affichés en base 10.

Décimal  binaire
(100)10 = 1 × 102 + 0 × 101 + 0 × 100
= 1 × 64 + 1 × 32 + 0 × 16 + 0 × 8 + 1 × 4 + 0 × 2 + 0 × 1
= 1 × 26 + 1 × 25 + 0 × 24 + 0 × 23 + 1 × 22 + 0 × 21 + 0 × 20
= (1100100)2

(0.3)10 = (0.0 1001 1001 1001 ...)2 ← fraction périodique en binaire !

Maths-Info (ENSAM) CMN 18 / 51


Représentation des nombres sur ordinateur Longueur de mots : source d’erreur

Sur un ordinateur l’unité d’information de base ou bit prend la valeur 0


ou 1. On regroupe les bits en mots de longueur variable (8, 16, 32 ou
64 sont les plus courants). Les nombres réels sont représentés à l’aide
de ces mots. La capacité mémoire est finie par construction. Il est
donc nécessaire de représenter les nombres réels sous forme
approchée. Cela entraîne un certain nombre d’erreurs.

Le fait d’utiliser un nombre limité de bits pour représenter un nombre


réel a des conséquences importantes. Pour représenter les nombres
réels on recourt généralement à
La troncature à N chiffres : on retranche les chiffres à partir de la
position N + 1.
L’arrondi à N chiffres : on ajoute 5 au (N + 1)ième chiffre de la
mantisse avant d’effectuer la troncature.

Maths-Info (ENSAM) CMN 19 / 51


Représentation des nombres sur ordinateur Les nombres naturels

Nombres Entiers
La première codification des nombres consiste à les coder de façon
naturelle sur les mots connus au niveau de la machine, 8, 16, 32 ou 64
bits la limitation étant la valeur maximale que l’on peut stocker. On
parle alors de représentation en champs fixe.

Par nombre naturel, on entend les nombres entiers, positifs ou nuls


1 octet pourra coder un nombre de (0000 0000)2 → (1111 1111)2
(0 → 255=28 − 1)
1 mot de 16 bits : de 0 → 216 − 1 (65535)
1 mot de 32 bits : de 0 → 232 − 1 (4 294 967 295)
La limite reste toujours la taille du mot manipulé

Maths-Info (ENSAM) CMN 20 / 51


Représentation des nombres sur ordinateur Les nombres relatifs

La représentation des nombres négatifs est réalisé grâce au bit de


poids fort "bit de gauche". On parle également d’entiers signés.
Nombres positifs → le bit de poids fort est 0
Nombres négatifs → le bit de poids fort est 1
Les autres bits contiennent la valeur absolue du nombre

Exemple sur un octet

Inconvénient : Pour réaliser des opérations entre nombres signés, il


faut faire un traitement particulier du bit de signe. Le résultat final ne
pouvant être obtenu de façon simple (addition ou soustraction des
deux nombres).
D’où l’utilisation du complément à 2.
Maths-Info (ENSAM) CMN 21 / 51
Représentation des nombres sur ordinateur Représentation par le complément à 2

Représentation par le complément à 1


Le complément à 1 (noté C1) est également appelé complément
logique, il consiste à inverser chaque bit (0 → 1 et 1 → 0)

Représentation par le complément à 2


Le complément à 2 (noté C2) est également appelé complément vrai,
il consiste à ajouter 1 en binaire au complément à 1.
L’entier positif est représenté en binaire naturel.
L’entier négatif est représenté par le complément à 2 de son
opposé.

Maths-Info (ENSAM) CMN 22 / 51


Représentation des nombres sur ordinateur

Exemple
Une soustraction a − b devient une addition a + (−b). (−b) étant le
complément à 2 de b

Si le bit de poids fort est 0, le résultat est positif, et si le bit de poids fort
est 1, le résultat est négatif Pour connaître la valeur absolue du
résultat négatif, il suffit de faire le complément à 2 :

En effet |5 − 12| = (0000 000111)2 = (7)10

Maths-Info (ENSAM) CMN 23 / 51


Représentation des nombres sur ordinateur

Les limites des nombres


Les nombres sont codés de façon fixe, ce qui fait qu’ils ont une limite
liée au nombre de bis qui les représentent :

En synthèse, si le nombre de bits est n, les valeurs vont de −2n−1 à


2n−1 − 1

Maths-Info (ENSAM) CMN 24 / 51


Représentation des nombres sur ordinateur Les nombre réels : représentation en virgule flottante

On se donne un entier b ≥ 2 appelé base de numération. On choisit


aussi un entier p ≥ 2 appelé précision ou nombre de chiffres
significatif. On se donne aussi deux entiers emax ≥ 2 et emin ≤ −2. Un
nombre flottant normalisé est alors un nombre de la forme

x = (−1)s × m × be

où s ∈ {0, 1} et (−1)s est le signe de x. m est appelée La mantisse,


elle est écrite sous la forme d’un nombre avec virgule fixe et possédant
un nombre maximum de p chiffres significatifs
p
X
m = 0.d1 d2 ...dp = dk b−k ,
k =1
avec 1 ≤ d1 ≤ b − 1 (mantisse normalisée) et 0 ≤ dk ≤ b − 1. L’entier
e, appelé exposant , vérifie emin ≤ e ≤ emax .
On vérifie que b1 ≤ m ≤ 1 − b−p et
λ = bemin −1 ≤ |x| ≤ µ = (1 − b−p )bemax . L’ensemble des flottants
normalisés est noté F (b, p, emin , emax )
Maths-Info (ENSAM) CMN 25 / 51
Représentation des nombres sur ordinateur Les nombre réels : représentation en virgule flottante

Par exemple, prenons b = 10, p = 5 et emax = −emin = 100.


Le rationnel 0.000000000000000000000123 est dans
F (10, 5, −100, 100) et s’écrit

x = (−1)0 × 0.12300 × 10−21

. Notons que 0 n’est pas un entier flottant normalisé.

Maths-Info (ENSAM) CMN 26 / 51


Représentation des nombres sur ordinateur Les nombre réels : représentation en virgule flottante

On pose  = b1−p et on vérifie sans peine le lemme suivant.

Lemme 1 Soit x > 0 un entier flottant normalisé et y le suivant (le plus


petit entier flottant normalisé plus grand que x) s’il existe. Alors y − x
vérifie
|x|
≤ y − x ≤ |x|
b

Maths-Info (ENSAM) CMN 27 / 51


Représentation des nombres sur ordinateur Les nombre réels : représentation en virgule flottante

Une fois choisis b, p, emin et emax on se donne une application


d’arrondi
[
φ : R → F (b, p, emin , emax ) {OVERFLOW , UNDERFLOW }

jouissant des propriétés suivantes :


φ(x) = OVERFLOW si et seulement si |x| > µ ;
φ(x) = UNDERFLOW si et seulement si |x| < λ ;
φ est croissante sur [λ, µ] et sur [−µ, −λ] ;
La restriction de φ à F (b, p, emin , emax ) est l’identité.

Maths-Info (ENSAM) CMN 28 / 51


Représentation des nombres sur ordinateur Les nombre réels : représentation en virgule flottante

Le fait d’utiliser un nombre limité de bits pour représenter un nombre


réel a des conséquences importantes :

Cette représentation introduit une erreur (troncature ou arrondi)


qui peut avoir un impact important sur la précision des résultats.
Quelque soit le nombre de bits utilisés, il existe un plus petit et un
plus grand nombre (positif et négatif) représentables . Il existe
donc un intervalle fini hors duquel on a un débordement (overflow)
ou un sous-dépassement (underflow). Dans ce cas les operations
arithmétique n’ont plus de sens.
A l’intérieur de cet intervalle fini, seul un nombre fini de nombres
sont représentables exactement.

Maths-Info (ENSAM) CMN 29 / 51


Représentation des nombres sur ordinateur Les nombre réels : représentation en virgule flottante

La représentation en virgule flottante induit une erreur relative qui


dépend du nombre de bits de la mantisse, de l’utilisation de la
troncature ou de l’arrondi, ainsi que du nombre x à représenter.

Définition
La précision machine est la plus grande erreur relative commise en
représentant un nombre réel sur ordinateur :

∆x
precision machine = maximum
|x|

En utilisant la troncature, on a : εm = b1−p


En utilisant l’arrondi, on a : ε = εm /2 = b1−p /2.

Remarque : En réalité la précision machine est au maximum égale à


εm ou ε mais dans la pratique on confond la précision avec cette borne.

Maths-Info (ENSAM) CMN 30 / 51


Représentation des nombres sur ordinateur Les nombre réels : représentation en virgule flottante

Représentation en virgule flottante : IEEE-754


C’est une façon de représenter un sous ensemble de rationnels
Le nombre est divisé en mantisse et exposant, les deux de taille
fixe
La norme IEEE 754 définie 3 formats dont deux externes et un
interne :
Les format externes sont la simple précision (32 bits) et la double
précision (64 bits)
Le format interne est utilisé à l’intérieur du processeur de calcul. La
précision de ce format est de 80 bits (format étendue)
La multiplication étant plus fréquente que l’addition, on n’utilise
pas la représentation de complément à 2, mais signe+valeur
absolue pour la mantisse
Pour l’exposant on utilise une représentation similaire au
complément à 2 appelée excédant 127 (simple précision) et
excédant 1023 (double précision)

Maths-Info (ENSAM) CMN 31 / 51


Représentation des nombres sur ordinateur Les nombre réels : représentation en virgule flottante

Représentation de la mantisse (IEEE-754) : représentation


normalisée
La valeur représentée est toujours supérieure ou égale à zéro
De plus, la valeur est toujours normalisée (1 <= m < 2). C’est
toujours possible, car on peut toujours ajuster l’exposant La valeur
représentée s’écrit donc : 1,...
Puisque le premier chiffre est toujours 1, on ne le représente pas
(il est implicite dans la représentation)
En simple précision, la représentation
00000000000000000000000 indique donc la valeur 1, la
représentation 10000000000000000000000 indique la valeur 1.5,
etc.

Maths-Info (ENSAM) CMN 32 / 51


Représentation des nombres sur ordinateur Les nombre réels : représentation en virgule flottante

Représentation de l’exposant (IEEE-754) : représentation


normalisée
L’opération la plus fréquente est l’addition/soustraction et la
comparaison. On n’utilise donc pas le complément à 2.
Pour la simple précision, on utilise une représentation "excédent
127"
Dans cette représentation, l’exposant représenté (l’exposant
décalé) est le nombre (positif) obtenu en additionnant 127 à
l’exposant "réel".
Les représentations 00000000 et 11111111 sont particulières.
La représentation 00000001 indique donc un exposant de 1 - 127
= -126. La représentation 11111110 indique un exposant de 254 -
127 = 127
Le plus petit nombre représentable est donc 1 ∗ 2−126 et le plus
grand nombre représentable est
1, 11111111111111111111111 ∗ 2127
Maths-Info (ENSAM) CMN 33 / 51
Représentation des nombres sur ordinateur Les nombre réels : représentation en virgule flottante

Représentation non normalisée (IEEE-754)


Il y a quatre représentations non nomalisées :
Représentation dénormalisée
Représentation de zéro
Représentation de l’infini
NaN (Not a Number)

Maths-Info (ENSAM) CMN 34 / 51


Représentation des nombres sur ordinateur Les nombre réels : représentation en virgule flottante

Représentation dénormalisée (IEEE-754)


Dans cette représentation le champ pour l’exposant est nul c’est à
dire 00000000 (simple précision), ce qui signifie un exposant de
-127.
La valeur de la mantisse est 0 < m < 1 avec tous les bits
représentés (pas de 1 implicite).
Le plus grand nombre dénormalisé est donc
0.11111111111111111111111 ∗ 2−127 soit presque 2−127 .
Le plus petit nombre dénormalisé est
0, 00000000000000000000001 ∗ 2−127 soit 2−150 .

Maths-Info (ENSAM) CMN 35 / 51


Représentation des nombres sur ordinateur Les nombre réels : représentation en virgule flottante

Représentation de zéro (IEEE-754)


La valeur zéro est représentée par un champ de l’exposant nul de
00000000 et un champ de la mantisse de
00000000000000000000000 (simple précision).
C’est l’extension logique de la représentation dénormalisée.
Il y a deux représentations pour zéro, une positive et une négative
selon la valeur du champ de signe.

Maths-Info (ENSAM) CMN 36 / 51


Représentation des nombres sur ordinateur Les nombre réels : représentation en virgule flottante

Représentation de l’infini (IEEE-754)


Le champ exposant est 11111111 et le champ mantisse est
00000000000000000000000 (simple précision).
Cette valeur est générée par des opérations arithmétiques dont le
résultat dépasse ce qui est représentable de façon normalisée.
Cette valeur est aussi acceptable en tant que opérande des
opérations arithmétiques.

Maths-Info (ENSAM) CMN 37 / 51


Représentation des nombres sur ordinateur Les nombre réels : représentation en virgule flottante

NaN : Not a Number (IEEE-754)


Certaines opérations, par exemple la division par zéro ou bien la
division de l’infini par l’infini, donne un résultat indéfini, dont la
représentation contient le champ exposant 11111111 et n’importe
quelle mantisse sauf 00000000000000000000000.

Maths-Info (ENSAM) CMN 38 / 51


Représentation des nombres sur ordinateur Les nombre réels : représentation en virgule flottante

La convention IEEE-754
Norme visant à standardiser la représentation des nombres sur les
ordinateurs. En particulier elle impose le nombre de bits pour la
mantisse, et l’exposant pour les nombres reels à 32 bits (simple
precision) et les reels 64 bits (double precision). Fait en sorte que l’on
peut determiner la precision machine ainsi que le plus grand et plus
petit reels (simple et double precision) représentable indépendemment
de l’ordinateur .
simple precision double precision
εm 0.119 × 10−6 0.222 × 10−15
plus petit réel (normalisée) 1.2 × 10−38 2.2 × 10−308
plus petit réel (non-normalisée) 1.4 × 10−45 4.9 × 10−324
plus grand réel 3.4 × 1038 1.8 × 10308

Maths-Info (ENSAM) CMN 39 / 51


Représentation des nombres sur ordinateur IEEE-754

Décalage de l’exposant
L’exposant étant représenté par un nombre signé (complément à 2), la
comparaison entre les nombres flottants devient un peu plus difficile.
Pour remedier à ce problème, l’exposant est décalé, afin de le stocker
sous forme d’un nombre non signé. Ce décalage est de 2e−1 − 1 (e
représente le nombre de bits de l’exposant) ; il s’agit donc d’une valeur
constante une fois que le nombre de bits e est fixé :

valeur = signe × 1, mantisse × 2(exposant−decalage)

Maths-Info (ENSAM) CMN 40 / 51


Représentation des nombres sur ordinateur IEEE-754

Format simple précision (32 bits)


Un nombre flottant simple précision est stocké dans un mot de 32 bit :
1 bit de signe, 8 bits pour l’exposant et 23 pour la mantisse. L’exposant
est donc décalé de 28−1 − 1 = 127 dans ce cas. L’exposant -127 (qui
est décalé vers la valeur 0) est réservé pour zéro et les nombres
dénormalisés, tandis que l’exposant 128 (décalé vers 255) est réservé
pour coder les infinis et les NaNs.

Maths-Info (ENSAM) CMN 41 / 51


Représentation des nombres sur ordinateur IEEE-754

Exemple1
Pour 0 01111100 01000000000000000000000, l’exposant est
124 − 127 = −3 et la partie significative est 1,01 soit 1,25 en décimal
(1x20 + 0x2−1 + 1x2−2 ) ; le nombre représenté est donc +1, 25x2−3
soit +0, 15625.

Maths-Info (ENSAM) CMN 42 / 51


Représentation des nombres sur ordinateur IEEE-754

Exemple2
Codons le nombre -118,625 en utilisant IEEE 754.
1 C’est un nombre négatif, le signe est donc "1".
2 Nous écrivons le nombre (sans le signe) en binaire. Nous
obtenons 1110110,101.
3 Nous décalons la virgule vers la gauche, de façon à ne laisser
qu’un 1 sur sa gauche : 1110110,101 (bin) = 1,110110101 (bin) x
26 . C’est un nombre flottant normalisé : la mantisse est la partie à
droite de la virgule, remplie de 0 vers la droite pour obtenir 23 bits.
Cela donne 110 1101 0100 0000 0000 0000 (on omet le 1 avant
la virgule, qui est implicite).
4 L’exposant est égal à 6, et nous devons le convertir en binaire et le
décaler. Pour le format 32-bit IEEE 754, le décalage est
28−1 − 1 = 127. Donc 6 + 127 = 133 (dec) = 1000 0101 (bin).
-118,625 (dec) = 1100 0010 1110 1101 0100 0000 0000 0000 (bin)
= C2ED4000 (hexa)
Maths-Info (ENSAM) CMN 43 / 51
Représentation des nombres sur ordinateur IEEE-754

Format double précision (64 bits)


Le format double précision est identique au simple précision, mis à
part le fait que les champs sont plus grands. En effet, il possède 52
bits de mantisse, et 11 bits d’exposant. La mantisse est très élargie,
alors que l’exposant est peu élargi. Ceci est dû au fait que, selon les
créateurs du standard, la précision est plus importante que
l’amplitude. Les NaNs et les infinis sont représentés en mettant tous
les bits de l’exposant à 1 (2047). Pour les nombres normalisés, le
décalage de l’exposant est +1023.

Maths-Info (ENSAM) CMN 44 / 51


Représentation des nombres sur ordinateur IEEE-754

Exceptions
Le bit de poids fort de la mantisse est déterminé par la valeur de
l’exposant décalé. Si l’exposant décalé est différent de 0 et de 2e − 1,
le bit de poids fort de la mantisse est 1, et le nombre est dit
"normalisé".
Si l’exposant décalé est nul, le bit de poids fort de la mantisse est nul,
et le nombre est "dé-normalisé".
Il y a trois cas particuliers :
1 si l’exposant décalé et la mantisse sont tous deux nuls, le nombre
est ±0 (selon le bit de signe)
2 si l’exposant décalé est égal à 2e − 1, et si la mantisse est nulle, le
nombre est ±∞ (selon le bit de signe)
3 si l’exposant décalé est égal à 2e − 1, mais que la mantisse n’est
pas nulle, le nombre est NaN (not a number : pas un nombre).

Maths-Info (ENSAM) CMN 45 / 51


Arithmétique flottante Modèle de l’arithmétique flottante

Les opérations élémentaires sont effectuées en arithmétique flottante


x + y −→ fl( fl(x) + fl(y ) )
x − y −→ fl( fl(x) − fl(y ) )
de la manière suivante : Attention :
x ÷ y −→ fl( fl(x) ÷ fl(y ) )
x × y −→ fl( fl(x) × fl(y ) )
plusieurs propriétés de l’arithmétique : associativité, distributivité, etc
ne sont plus valides (pas toujours) en arithmétique flottante !

Maths-Info (ENSAM) CMN 46 / 51


Arithmétique flottante Associativité

Par exemple : supposons que les réels soient calculés avec n = 3


chiffres significatifs et arrondis à la décimale la plus proche.
Soient x = 8, 22, y = 0, 00317, z = 0, 00432
(x + y ) + z 6= x + (y + z)

Maths-Info (ENSAM) CMN 47 / 51


Arithmétique flottante Distributivité

Encore avec n =3

x × (y + z) 6= x × y + x × z

122 × (333 + 695) = fl( 0, 122 103 × fl( 0, 333 103 + 0, 695 103 ) )
= fl( 0, 122 103 × fl( 1, 028 103 ))
= fl( 0, 122 103 × fl( 0, 103 104 ))
= fl( 0, 012566 107 ))
= 0, 126 106
(122 × 333) + (122 × 695) = fl( fl( 0, 122 103 × 0, 333 103 )
+ fl( 0, 122 103 × 0, 695 103 ) )
= fl( fl( 0, 040626 106 + fl( 0, 08479 106 )
= fl( 0, 406 105 + 0, 848 105 )
= fl( 1, 254 105 )
= 0, 125 106
Il ya donc une différence entre les deux résultats.

Maths-Info (ENSAM) CMN 48 / 51


Arithmétique flottante Attention à l’exposant ! ! !

Il faut être prudent avec l’addition et la soustraction. Lorsque les


exposants ne sont pas les mêmes il est nécessaire de décaler la
mantisse avant d’effectuer l’addition ou la soustraction.
Pour n = 4
0, 4035 106 + 0, 1978 104 = fl( 0, 4035 106 + 0, 1978 104 )
= fl( 0, 4035 106 + 0, 001978 106 )
= fl( 0, 405478 106 )
= 0, 4055 106
et
0, 56789 104 − 0, 1234321 106 = fl( 0, 5679 104 − 0, 1234 106 )
= fl( 0, 005679 106 − 0, 1234 106 )
= fl( −0, 11772 106 )
= −0, 1177 106

Maths-Info (ENSAM) CMN 49 / 51


Arithmétique flottante Phénomène de cancellation

Il existe d’autre part, un certain nombre d’opérations risquées.


Soustraire deux nombres presque identiques :
√ √
7001 − 7000 = 0, 8367 102 − 0, 8367 102
= 0, 000 100 si n = 4
√ √
7001 − 7000 = 0, 83672 102 − 0, 83666 102
= 0, 6 10−2 si n = 5

Dans ce cas-ci on peut remédier à cette difficulté en évitant la


soustraction des racines :
√ √ x −y
x− y=√ √
x+ y

et on trouve 0, 5977 10−2 au lieu de 0 pour n = 4.

Maths-Info (ENSAM) CMN 50 / 51


Arithmétique flottante Conclusion

L’ordre dans lequel on fait les opérations et le nombre d’opérations ont


un impact important sur la précision du résultats. Ainsi on devrait
”toujours“ :
éviter les opérations avec des nombres très différents en ordre de
grandeurs,
éviter si possibles les soustractions avec des nombre relativement
proche,
on devrait faire les sommes en ordre décroissant.

Maths-Info (ENSAM) CMN 51 / 51

Vous aimerez peut-être aussi