Vous êtes sur la page 1sur 10

Chapitre 2 Système de numération

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)

10 représente la base du nombre et les puissances de 0 à 3 le rang de chaque chiffre.


Quelque soit la base, le chiffre de droite est celui des unités.
Celui de gauche est celui qui a le poids le plus élevé.

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).

Avec un octet, nous pouvons écrire 2 puissance 8 = 256 nombres binaires


Les règles sont les mêmes que pour le décimal.

4. Correspondance entre binaire et décimal.


* Conversion d'un nombre binaire en décimal.

1
Il suffit de faire la somme des poids de chaque bit à 1
Le nombre ci-dessus est égal à 64 + 4 + 1 = 69

* Conversion d'un nombre décimal en binaire (exemple : N = 68).


L’opération consiste à effectuer des divisions successives par 2 jusqu’à ce que le quotient soit
nul et de récupérer ensuite les restes des divisions tels que le dernier représente le poids le
plus fort et le premier correspond au poids le plus faible.

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

D’une manière générale :


 pour représenter un nombre décimal dans une base b, on effectue des divisions
successives par b jusqu'à l’obtention d’un quotient nul et récupérer les restes tels que
le dernier représente le poids le plus fort et le premier le poids le plus faible ;
 pour représenter un nombre écrit dans une base b constitué de n chiffres
[ ] dans la base 10, on applique la formule suivante :

Avec N : la valeur du nombre en base 10.

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

7. Correspondance entre décimal et hexadécimal.


La méthode par divisions s'applique comme en binaire (exemple : N = 2623).
(2623)10=(A3F)16

8. Opérations arithmétiques et logiques


Addition en binaire
L'addition est réalisée bit à bit.
1+0=1
1 + 1 = 10
1 + 1 + 1 = 11

Produit logique en binaire


La fonction ET est appliquée bit à bit

9. Les nombres signés


En binaire, le négatif d'un nombre est son complément à 2, c'est à dire son complément + 1.
Soient deux nombres A = 104 et B = 42 A - B = A + (- B)

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

11. Représentation des nombres réels


Comme pour les autres types d'information, pour représenter un nombre réel, on dispose d'un
nombre fini de bits et on peut imaginer différentes façons de représenter un réel avec cet
ensemble de bits. Les deux méthodes de représentation les plus connue sont la représentation
en virgule fixe et la représentation en virgule flottante. C'est cette dernière qui est la plus
utilisée.

11.1. La représentation en virgule fixe


il s'agit de la représentation habituelle comme on le fait sur papier sauf pour le signe et la
virgule. Pour le signe, on réserve un bit, en général le bit de gauche. La virgule quant à elle
n'est pas représentée, on travaille avec une virgule implicite située à une place bien
déterminée.
Exemple :
• Représentation sur 9 bits
• bit de gauche réservé au signe (0 = positif, 1 = négatif)
• les autres bits représentent la valeur absolue
• la virgule est placée à gauche du 4ème bit à partir de la droite

Rappelons que les valeurs de pondération pour le système binaire sont :

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.

Dans les ordinateurs, la représentation se fait évidemment en binaire, il faut maintenant se


mettre d'accord comment répartir le nombre de bits dont en dispose pour représenter :
- le signe du nombre ;
- la mantisse ;
- l'exposant signé.
Pour pouvoir échanger des documents, il est indispensable que tout le monde utilise la même
représentation.

11.2.1. La norme IEEE-754


C'est la norme recommandée par the Institute of Electrical and Electronics Engineers, elle est
utilisée sur la quasi-totalité des ordinateurs pour représenter les nombres réels. Chaque
nombre est représenté par :

* 1 bit pour le signe


* Ne bits pour l'exposant signé
* Nm bits pour la valeur absolue de la mantisse

On distingue plusieurs variantes dont les plus utilisée sont :

11.2.2. IEEE-754 simple précision

Signe :
Le bit tout à fait à gauche est réservé au signe : 0positif, 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 :

1 ≤ mantisse < base de numération

La normalisation de la mantisse revient à déplacer la virgule ce qui va forcément modifier


l'exposant. Chaque fois qu'on déplace la virgule d'une position à gauche il faut augmenter
l'exposant de 1 et inversement.

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

- c'est un nombre négatif


- EB = 11100111 = 231  E = 231 – 127 = 104
- R = - 1,11100111001110011100111 2104 ≈ - 1,9 2104 = ≈ - 3,86 1031
Revenons maintenant aux 2 combinaisons de l'exposant non encore utilisé soit 00000000 et
11111111

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 :

Si on note m la partie fractionnelle de la mantisse, on distingue deux situations :


 m = 0  le nombre représenté R = 0
 m ≠ 0,  c'est un nombre dénormalisé car on va utiliser un biais B=126 et une
mantisse de la forme 0,xxxxx. Ceci va nous permettre de représenter les nombre compris
entre 0 et 2-126 , il est vrai avec une précision moindre puisqu'on peut avoir des mantisse de la
forme 0,00000000xxxx, mais il vaut mieux les représenter avec moins de précision que ne pas
les représenter du tout

• 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=0R=∞
 m ≠ 0,  R = NaN

Récapitulation

11.2.3. IEEE-754 double précision


La représentation en double précision se fait façon tout à fait similaire. La représentation se
fait 64 bits avec 11 bits pour l'exposant et 52 pour la mantisse

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

12. Arithmétique en précision finie


Sources d’approximation dans le calcul numérique
Les deux sources d’erreur qui interviennent systématiquement dans le calcul numérique sont :
* Les erreurs de troncature ou de discrétisation qui proviennent de simplifications du modèle
mathématique comme par exemple le remplacement d’une dérivée par une différence finie, le
développement en série de Taylor limité, etc.
* Les erreurs d’arrondi qui proviennent du fait qu’il n’est pas possible de représenter (tous)
les réels exactement dans un ordinateur.
Dans ce chapitre on expliquera d’abord quelle est l’approximation utilisée pour représenter les
nombres réels dans un ordinateur et ensuite on discutera les conséquences de cette
représentation inexacte.
Rappelons que dans un ordinateur le support pour toute information est un mot constitué par
une séquence de bits (en général 32), un bit prenant la valeur 0 ou 1.

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.

12.1. Chiffres significatifs

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.

12.2. Précision, erreurs d’arrondi


Avant de préciser la définition de précision d’un système en virgule flottante, illustrons avec
un exemple les problèmes qui peuvent surgir lorsque les calculs se font en précision finie.
Exemple : Résolution numérique d’une équation du deuxième degré ax2+bx+c = 0. Les
solutions analytiques sont :

Pour a = 1, c = 2 et une arithmétique à 5 digits significatifs l’algorithme 1 est appliqué ci-


après pour des valeurs différentes de b.

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