Chapitre I Systèmes de Numération Et Codes
Chapitre I Systèmes de Numération Et Codes
Chapitre I Systèmes de Numération Et Codes
I -- SYSTEMES DE NUMERATION
Le système décimal est le système à base 10. Pour écrire un nombre dans ce système, on a besoin de 10
symboles qu'on a l'habitude d'appeler chiffres. L'écriture implique l'application d'un principe de position,
tout chiffre placé à gauche d'un autre représente des unités 10 fois plus fortes que cet autre, cette unité
est dite le poids du chiffre. Le poids du dernier chiffre à droite avant la virgule est 100=1, c'est le chiffre
des unités. A droite de la virgule, le poids est divisé par 10 chaque fois qu'on avance d'un chiffre vers la
droite.
C'est le système de base 8. L'écriture d'un nombre dans ce système nécessite 8 chiffres, on utilise les
chiffres de 0 à 7. Dans cette base les poids sont :
C'est le système de base 16. L'écriture d'un nombre dans ce système nécessite 16 chiffres, on utilise
les chiffres de 0 à 9 plus les lettres A, B, C, D, E et F.
Hexadécimal 0 1 2 3 4 5 6 7 8 9 A B C D E F
Décimal 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
A4B9
+3FE6
E49F
I.4 -- Système Binaire Naturel
32 16 8 4 2 1
25 24 23 22 21 20
1 0 1 1 0 1 = (32+8+4+1)10 = 4510
Ce système est très utilisé car facilement matérialisable. Les deux chiffres 0 et 1 peuvent être mis en
évidence techniquement par plusieurs façons :
ch
Chapitre I Système de numération et codes.
Z.HALICHE 3
- Passage ou non d'un courant électrique dans un composant.
- Etat d'un commutateur (transistor ou autre) ouvert ou fermé.
- Valeur d'une tension à la sortie d'un composant, ex: +5V = "1" et 0V = "0"
Pour les chiffres à droite de la virgule, on procède d'une façon similaire, sachant que les poids à droite
de la virgule sont 0.5, 0.25, 0.125 … La division en échelle se transforme en une multiplication en échelle qui
s'arrête quand le résultat est nul. IL arrive qu'on ne tombe jamais sur un résultat nul et la multiplication ne
s'arrête jamais. Dans ce cas on est libre d'arrêter dès qu'on juge que le nombre de chiffres après la virgule
est suffisant.
Exemple : (175.34)10 = (? )2
(175)10 = (10101111)2
0.34*2 = 0.68, 0.68*2 = 1.36, 0.36*2 = 0.72, 0.72*2 = 1.44, 0.44*2 = 0.88
0.34 = 0.01010
((175)10 = (10101111. 01010)2
122310 = ?8
1223 = 2 * 512 + 199
199 = 3 * 64 + 7
7 = 0 * 8 +7
7=7*1+0
1223 8
42
122310 = 23078 152 8
23 72
7 19 8
Une deuxième méthode pour convertir un nombre décimal vers une base 0
3 2 8
quelconque B consiste à faire une division successive par B autant de fois
2
que cela est nécessaire jusqu'à obtenir un quotient nul. On écrit alors les 0
restes où ils ont été obtenus dans l'ordre inverse
I.5.3 -- Décimal → Hexadécimal
16617 16 5000 16
9 1038 16 8 312 16
14 64 16 8 19 16
0 4 16 3 1 16
4 1
0 0
Octal → binaire : On écrit chaque chiffre octal est écrit sur 3 bits
2358 = 010 011 1012
7538 = 111 101 0112
Binaire → octal : Le nombre binaire est découpé en tronçon de 3 bits en commençant de la droite (LSB),
et chaque 3bits seront écrit en octal.
11001111011002 = 1 100 111 101 1002 = 147548
Binaire → hexadécimal : Le nombre binaire est découpé en tronçon de 4 bits en commençant de la droite
(LSB), et chaque 4 bits seront écrits en hexadécimal.
11001111011002 = 1 1001 1110 11002 = 19EC16
111101111100110112 = 1 1110 1111 1001 10112 = 1EF9B16
ch
Chapitre I Système de numération et codes.
Z.HALICHE 5
I.6 -- Opérations dans le système Binaire naturel
Les choses se passent exactement comme on a l'habitude de le faire en base 10, seulement ici nous
n'avons que 2 chiffres 0 et 1:
0+0=0
0+1=1
1 + 1 = 0 et on retient 1
1 + 1 + 1 = 1 et on retient 1
101 111
+ 11 +101
1000 1100
Une contrainte très importante va intervenir dès qu'il s'agit de faire des opérations par des machines
car celles-ci travaillent avec des registres de tailles fixes donc traitent des nombres qui ont toujours le
même nombre de bits. Prenons l'exemple d'une machine qui travaille sur 4 bits, elle peut représenter
16=24 nombres différents. Deux possibilités s'offrent à nous :
• Les 16 nombres seront considérés comme des entiers non signés. On aura donc 16 nombres positifs
allant de 0 à 15
• Les 16 nombres seront considérés comme des nombres signés. On aura donc 8 nombres positifs (moitié)
allant de 0 à 7 et 8 nombres négatifs allant de -8 à -1.
Reprenons l'exemple d'une machine 4 bits, si on ajoute deux nombres et le résultat est supérieur à 15, il
écrit normalement sur 5 bits est la machine n'a que 4 bits donc le 5 ième sera perdu, et le résultat sera
diminué de 1610=100002
0101 (5) 0111 (7)
+ 0011 (3) +1101 (13)
1000 (8) 0100 (4)
On s'aperçoit finalement qu'une machine 4 bits travaille modulo 16=2 4, c'est à dire que pour cette
machine, on a 16 = 0. Donc pour cette machine l'opposé d'un nombre N est -N tel que N + (-N) = 0 = 16 soit
-N = 16 -N.
On peut écrire -N = 15+1 -N = 15-N +1.
L'Opération 15-N s'appelle le complément à 1 du nombre N car elle revient à complémenter (par rapport à
1) un par un tous les bits du nombre N.
Nombre 0101 (5) 1111 (15)
Son complément à 1 1010 (10=15-5) 0000 (15-15=0)
Finalement pour obtenir l'opposé d'un nombre N, il suffit de complémenter tous ses bits puis de rajouter 1,
cette opération s'appelle le complément à 2 de N.
Si on note N le complément à 1 de N on a : -N = N +1
-7 = 7 + 1 = 1001 7 0111
7 1000
+ 1
ch
Chapitre I Système de numération et codes.
Z.HALICHE 6
1001
Une machine 4 bits peut donc représenter les nombres suivants
Négatifs Positifs
-1 1111 0 0000
-2 1110 1 0001
-3 1101 2 0010
-4 1100 3 0011
-5 1011 4 0100
-6 1010 5 0101
-7 1001 6 0110
-8 1000 7 0111
Remarquons que pour les nombres positifs, le MSB est égal à 0 et pour les nombres négatifs le MSB est
égal à 1. C'est ainsi qu'on peut tester si le résultat d'une opération est juste. La règle est simple :
- la somme de 2 nombres positifs doit donner un nombre positif
- la somme de 2 nombres négatifs doit donner un nombre négatif
L'erreur se produit quand il y a débordement, c.a.d quand le résultat dépasse le nombre maximum que la
machine peut représenter soit +7 pour les nombres positifs ou -8 pour les nombres négatifs. Une erreur
peut se produire quand on ajoute des nombres de même signe. Il y a erreur quand le signe du résultat est
différent de celui des deux opérandes
0011 (3) 0101 (5) 0010 (2) 1110 (-2) 1011 (-5)
+0100 (4) +0110 (6) + 1001 (-7) +1101 (-3) + 1100 (-4)
0111 (7) erreur 1011 (-5) 1011 (-5) erreur
I.6.2 -- La multiplication
Regardons d'abord comment on fait une multiplication en base 2 sur un aspect mathématique pur sans
limitation sur le nombre de bits. Remarquons au passage qu'ici on considère que tous les nombres sont
positifs car le concept de représentation des nombres négatifs par le complément à 2 n'est valable que si
on travaille avec un nombre de bit fixe.
1011 (11)
*1101 (13)
1011
1011•
1011 .
10001111 (143)
Regardons maintenant comment on doit procéder si on travaille avec des nombres signés sur un nombre
de bit fixe :
On commence à procéder de la même façon sauf que l'addition doit se faire sur 4 bits seulement, les
bits de gauches seront ignorés.
On vérifiera que le résultat est juste en vérifiant les règles suivantes :
• Le produit de deux nombres de même signe doit être positif
• Le produit de deux nombres de signes différents doit être négatif
ch
Chapitre I Système de numération et codes.
Z.HALICHE 7
1110 (-2)
0010 (2) * 1101 (-3) 0010 (2)
*0011 (3) 1110 1110 (-2) *0101 (5)
0010 11 10 *0100 (4) 0010
0 010 111 0 00 10
1110
0110 (6) 0110 (6) 1000 (-8) 1010 (-6:erreur)
Les systèmes utilisés précédemment constituent des systèmes naturels ou codes naturels ou encore codes
pondérés. Ils sont caractérisés par le fait que le poids du chiffre de rang i est B fois celui du rang i-1, B
étant la base du système.
Il existe d'autres codes qui possèdent des avantages particuliers pour des utilisations particulières, on
peut citer :
- L'utilisation d'un code particulier peut rendre le traitement d'un message plus au moins économique du
point de vue temps de traitement ou encombrement en mémoire ou encore en nombre de composant
nécessaire pour effectuer le traitement.
- Dans de nombreux cas on peut améliorer l'efficacité d'un système de communication en utilisant des
codes détecteurs d'erreurs ou encore des codes correcteurs d'erreurs ...
Dans la vie courante le système de numération le plus fréquent étant le décimal, il est souvent utile de
garder d'un nombre une représentation décimale, tout en travaillant en binaire. On réalise ce tour de force
simplement en convertissant chaque chiffre de la représentation décimale en un des nombreux codes
binaires. Les chiffres utilisés varient de 0 à 9, nous auront besoin d'au moins quatre bits par chiffre. Voici
quelques exemples de codes décimaux résumés dans le tableau suivant:
Le plus courant est le code DCB (Décimal codé en binaire), en anglais BCD (Binary Coded decimal), chaque
chiffre du système décimal est codé en binaire naturel sur 4 bits.
10 15 14 13 12
ch
Chapitre I Système de numération et codes.
Z.HALICHE 9
BA
DC 00 01 11 10
0 1 2 3 A 0 1 1 0 0 0 0 1 1 1 1 1 1 0 0 0
00
7 6 5 4
B 0 0 1 1 1 1 1 1 1 1 0 0 0 0 0 0
C 0 0 0 0 1 1 0 0 1 1 1 1 0 0 1 1
01
11 8 9 10 11 D 0 0 0 0 0 1 1 1 1 0 0 1 1 1 1 0
10 15 14 13 12
BA
DC 00 01 11 10
0 1 2 3
00
7 6 5 4 A 0 1 1 0 0 0 0 1 1 0 0 0 1 1 1 1
01
B 0 0 1 1 1 1 1 1 0 0 0 0 0 1 1 0
11 8 9 10 11 C 0 0 0 0 1 1 0 0 0 0 1 1 1 1 1 1
10 15 14 13 12 D 0 0 0 0 0 1 1 1 1 1 1 0 0 0 1 1