Documente Academic
Documente Profesional
Documente Cultură
1. Introduction
Depuis le Moyen-Âge, on écrit les nombres entiers naturels en notation décimale à position.
Cela signifie que, pour écrire le nombre entier naturel n, on commence par imaginer n objets,
que l’on groupe par paquets de dix, puis on groupe ces paquets de dix objets en paquets de dix
paquets, etc. À la fin, il reste entre zéro et neuf objets isolés, entre zéro et neuf paquets isolés
de dix objets, entre zéro et neuf paquets isolés de cent objets, etc. Et on représente cet entier
naturel en écrivant de droite à gauche, le nombre d’objets isolés, le nombre de paquets de dix,
le nombre de paquets de cent, le nombre de paquets de mille, etc. Chacun de ces nombres
étant compris entre zéro et neuf, seuls dix chiffres sont nécessaires : 0, 1, 2, 3, 4, 5, 6, 7, 8 et
9. Par exemple, l’écriture 2359 exprime un entier naturel formé de 9 unités, 5 dizaines, 3
centaines et 2 milliers.
Le choix de faire des paquets de dix est conventionnel : on aurait tout aussi bien pu décider de
faire des paquets de deux, de cinq, de douze, de vingt, de soixante, etc. On écrirait alors les
nombres entiers naturels en notation à position en base deux, cinq, douze, vingt ou soixante.
La notation décimale s’appelle donc aussi notation à position en base dix.
2. Le système décimal
Les nombres que nous utilisons habituellement sont ceux de la base 10 (système décimal).
Nous disposons de dix chiffres différents de 0 à 9 pour écrire tous les nombres.
D'une manière générale, toute base N est composée de N chiffre de 0 à N-1.
Soit un nombre décimal N = 2348. Ce nombre est la somme de 8 unités, 4 dizaines, 3
centaines et 2 milliers.
Nous pouvons écrire N = (2 x 1000) + (3 x 100) + (4 x 10) + (8 x 1)
3. Le binaire
Dans les domaines de l'automatisme, de l'électronique et de l'informatique, nous utilisons la
base 2. Tous les nombres en base 2 s'écrivent avec deux chiffres uniquement (0 et 1).
Un groupe de bits est appelé un mot, un mot de huit bits est nommé un octet (byte).
1
Il suffit de faire la somme des poids de chaque bit à 1
Le nombre ci-dessus est égal à 64 + 4 + 1 = 69
68 2
0 34 2
Bit de poids faible 0 2
17
1 8 2
0 4 2
2
0 2 quotient nul : arrêt
0 1 2 de la division
1 0
Bit de Poids fort
(68)10=(1000100)2
5. L'hexadécimal
La manipulation des nombres écrits en binaire est difficile pour l'être humain et la conversion
en décimal n'est pas simple. C'est pourquoi nous utilisons de préférence le système
hexadécimal (base 16).
Pour écrire les nombres en base 16 nous devons disposer de 16 chiffres, pour les dix premiers,
nous utilisons les chiffres de la base 10, pour les suivant nous utiliserons des lettres de
l'alphabet.
Les règles sont ici aussi les mêmes que pour le décimal.
2
6. Correspondance entre binaire et hexadécimal
La conversion du binaire en hexadécimal est très simple, c'est d'ailleurs la raison pour laquelle
nous utilisons cette base.
Il suffit de faire correspondre un mot de quatre bits (quartet) à chaque chiffre hexadécimal.
Conversion d'un mot de 16 bits entre binaire et hexadécimal
Le premier bit est à 0 pour les nombres négatifs et à 1 pour les nombres positifs.
Le plus grand nombre signé sur 8 bits est +127 ( 01111111 )
Le plus petit nombre signé sur 8 bits est -128 ( 10000000 )
-128 à +127 => 256 combinaisons (2 puissance 8)
3
10. Le codage ASCII
Le binaire permet de coder les nombres que les systèmes informatiques peuvent manipuler.
Cependant, l'ordinateur doit aussi utiliser des caractères alphanumériques pour mémoriser et
transmettre des textes. Pour coder ces caractères, on associe à chacun d'entre eux un code
binaire, c'est le codage ASCII (American Standard Code for Information Interchange).
Le caractère A par exemple à pour code 65 soit 01000001 en binaire et 41 en hexadécimal.
Le caractère f : 102
le point d'interrogation ? : 63
Le chiffre 2 : 50
Rappelons aussi qu'une méthode systématique pour convertir un nombre réel de décimal à
binaire consiste à convertir la partie entière par divisions successives et la partie fractionnelle
par multiplications successives, on arrête la multiplication quand on a un résultat nul ou quand
on estime qu'on a suffisamment de chiffre après la virgule.
Cette représentation n'est pas très utilisée car elle a une faible précision à cause des chiffres
perdus à droite de la virgule. On peut vérifier qu'avec la représentation de l'exemple
précèdent, 011000111 représente aussi bien le nombre +12,4375 que le nombre +12,4999.
4
De même, les deux nombres +0.5 et 0.56 seront tous les deux représenté par 000001000. Un
autre problème de cette représentation est qu'elle ne permet pas de représenter les nombres
très grands.
11.2. La représentation en virgule flottante
Les scientifiques ont depuis longtemps appris à s'accommoder avec les problèmes de la
virgule fixe en utilisant la représentation scientifique dans laquelle un nombre est représenté
par le produit d'une mantisse et d'une puissance de 10 (décimal) ou d'une puissance de 2
(binaire). La représentation des nombres sur un ordinateur selon cette méthode est désignée
par représentation en virgule flottante.
Signe :
Le bit tout à fait à gauche est réservé au signe : 0positif, 1 négatif
L'exposant :
L'exposant est représenté sur 8 bits ce qui permet de représenter 256 nombres différents allant
de 0 = 00000000 à 255 = 11111111.
5
Les deux combinaisons d'extrémité c'est-à-dire 0 et 255 sont réservés pour représenter des
nombres particuliers. Il reste donc 254 combinaisons allant de 00000001 à 11111110. Comme
l'exposant est un nombre signé, les 254 combinaisons permettent de représenter les nombres
allant de -126 à +127. Ce n'est pas la représentation en complément à 2 qui est utilisée mais la
représentation biaisée. Pour représenter un exposant de l'intervalle [-126,+127] on lui ajoute
un biais (décalage) suffisamment grand pour l'amener dans l'intervalle [1,254] afin qu'en
puisse le représenter en binaire naturel. La valeur du Biais est donc B=127.
La mantisse :
On dispose de 23 bits pour représenter la mantisse. Avant cela il faut la normaliser ou la
cadrer c'est-à-dire la ramener dans l'intervalle [1 , 2[ autrement dit il faut avoir :
En résumé il faut que la mantisse soit sous la forme 1,xxxxxx, Avec cette convention, on a
pas besoin de stocker le 1 ce qui nous ferait perdre une position pour rien, on ne stocke alors
que la partie à droite de la virgule
On peut maintenant essayer de voir quelques exemples :
• R = + 110011,0101111
- On commence par normaliser R = 1,100110101111 25
- On détermine ensuite la représentation biaisée de l'exposant EB = 5+127= 132 =
10000100
6
• EB = 00000000 est utilisé pour représenter les nombres voisins de 0 c.à.d inférieurs à 2-126
qui est le plus petit nombre qu'on peut représenter par le système décrit ci-dessus soit :
• EB = 11111111 cette combinaison est utilisé pour indiquer un résultat qui n'est pas un
nombre réel représentable comme les nombres qui dépassent le plus grand nombre que l'on
peut représenter (infini) ou quand on utilise une opération arithmétique non définie comme
0/0 ou log(-1) on parle alors d'un pseudo nombre appelé NaN (Not a Number).
m=0R=∞
m ≠ 0, R = NaN
Récapitulation
7
Pour les nombre normalisés (EB = -1022 à 1023) on utilise un biais B=1023.
Pour 0, les nombres non normalisé, ∞ et NaN on utilise exactement le même principe utilisé
pour la simple précision
Cette séquence de bits est alors interprétée comme la représentation en base 2 d’un nombre
entier. Ainsi les nombres entiers peuvent être représentés exactement dans un ordinateur.
Si tous les calculs peuvent se faire en nombres entiers, on parle d’arithmétique en nombres
entiers. Ces calculs sont alors exacts.
Une division 1/3 nécessite un nombre infini de digits pour représenter le résultat exactement.
Dans la pratique, on recourra à l’arithmétique en virgule flottante pour représenter une
approximation du résultat. Ainsi apparait le problème des erreurs d’arrondis.
Remarque : Il existe une catégorie de logiciels (e.g. Maple) qui permettent de faire des calculs
symboliques en traitant des expressions algébriques. Ces mêmes logiciels effectuent des
calculs, impliquant des nombres réels, avec une précision quelconque, limitée uniquement par
la performance de l’ordinateur. Ceci ne permet évidemment pas de contourner les problèmes
dans la plupart des calculs numériques.
8
C'est la notion importante qui justifie l'écriture en virgule flottante. Le but de cette
représentation est d'obtenir, pour un encombrement mémoire donné, un éventail de valeurs
suffisant avec la plus grande précision possible.
Pour illustrer cette notion et pour plus de commodité nous nous placerons dans le système de
numérotation décimal. Supposons que nous disposions de 8 caractères dont la virgule et le
signe pour représenter un décimal. Dans une représentation à virgule fixe, nous ne pourrons
écrire que les décimaux du type suivant :
±123, 456
L'éventail des nombres représentables est très limité. Ainsi le plus petit décimal, en valeur
absolue, représentable est :
+0, 00001
Sur ce dernier exemple 5 caractères sont occupés par la représentation de 0 et le seul chiffre
significatif est 1. Il est clair qu'une telle représentation est d'une part particulièrement
inefficace et d'autre part d'une précision très limitée. L'idée de la représentation en virgule
flottante consiste donc à avoir toujours un maximum de chiffres significatifs.
Ci-après on propose un autre algorithme qui exploite le théorème de Viète et qui évite le
calcul de la différence de deux nombres qui est à l’origine de la perte de précision si ces
nombres sont très proches.
9
Pour caractériser la précision d’un système de représentation des nombres réels en virgule
flottante on présente souvent les mesures suivantes :
– Précision machine (eps)
– Digits significatifs
– Erreur d’arrondi (u)
– Erreur relative ()
Bien que ces nombres différent légèrement entre eux et dépendent du schéma d’arrondi
(chopping ou perfect rounding), tous donnent une mesure qui caractérise la granularité du
système en virgule flottante.
10