`
Systemes de nombres et codes
Ce chapitre presente la base des syst`emes de notation utilises dans les syst`emes
numeriques, tel que le codage binaire, ou hexadecimal. On y verra aussi differentes
methodes pour coder les syst`emes.
2.1 `
Systeme positionnel
Le syst`eme positionnel est le syst`eme de base utilise pour coder des chiffres. Le syst`eme
le mieux connu est le syst`eme decimal. Dans ces syst`emes, la position dun chiffre est
associee a` un poids (ou valeur) specifique.
2.1.1 `
Systeme
decimal
1
`
CHAPITRE 2. SYSTEMES DE NOMBRES ET CODES
2.1.2 `
Systeme binaire
Cest le syst`eme le mieux connu apr`es le syst`eme decimal. Cest aussi la base de tous les
syst`emes numeriques (ordinateurs, microcontroleurs, etc). Dans ce syst`eme, a` base 2, r = 2,
et les deux symboles sont 0 et 1.
Exemple 1
Quelle est la valeur decimale des chiffres binaires suivants : 100112 et 101.0012 ?
100112 = 1 24 + 0 23 + 0 22 + 1 21 + 1 20
= 1 16 + 0 8 + 0 4 + 1 2 + 1 1 = 1910
On utilise un indice pour indiquer la base avec laquelle le chiffre est e crit. Le chiffre le
plus a` gauche est le chiffre le plus important : cest lui qui a le plus de poids sur la valeur du
chiffre. Ce chiffre est nomme le bit le plus significatif (MSB : most significant bit). Le bit le
plus a` droite est le chiffre le moins significatif, nomme le LSB. Par exemple, pour le chiffre
100112 , sil y a erreur dans le MSB, la valeur du chiffre est 3 au lieu de 19. Par contre, sil y
a erreur dans le LSB, le chiffre est 18 au lieu de 19 ; lerreur est moins significative dans ce
cas.
2.1.3 `
Systeme octal
2.1.4 `
Systeme
hexadecimal
Il existe quelques methodes pour convertir dune base a` une autre. Certaines conversions
sont plus faciles que dautre, comme la conversion de binaire a` hexadecimal.
2.2.1
Conversions binaire-octal-hexadecimal
La conversion de binaire a` octal est assez simple, puisque dans la base octal, 8 = 23 . On
doit donc grouper les termes binaires en groupes de trois, puis convertir. Exemple :
1000110011102 = 100 011 001 110 = 43168
4 3 1 6
Le meme principe peut e tre applique pour convertir de binaire a` hexadecimal ; cette fois,
on fait des groupes de 4 (16 = 24 ).
1000110011102 = 1000 1100 1110 = 8CE16
8 C E
Pour convertir de octal (ou hexadecimal) a` binaire, on fait le processus inverse. Pour
la conversion octal-binaire, chaque chiffre octal est e crit comme 3 bits binaires, et pour
la conversion hexadecimale, chaque chiffre hexadecimal est e crit comme 4 bits binaires.
Exemples :
13578 = 001 011 101 1112
9F.46C16 = 1001 1111. 0100 0110 11002
2.2.2
Conversion de decimal a` une autre base
Pour convertir de decimal a` une autre base, on fait la division par la base a` laquelle on
veut convertir. On fait la division jusqu`a ce que le chiffre a` diviser soit plus petit que la
base.
Exemple 2
Exemple 3
Exemple 4
Avec des fractions, il est possible davoir des erreurs de conversions. Il faut tronquer la
sequence selon le nombre de bits voulus.
Exemple 5
Ici, la sequence se rep`ete a` partir de d6 . Il faut donc decider du nombre de bits a` utiliser
dans la conversion. Avec 3 bits, la reponse est 0102 , ce qui est 0.25 si on reconvertit en
decimal. On a donc une erreur de 0.05.
Laddition et la soustraction binaires suivent les meme r`egles que le decimal, sauf quil
ny a que deux valeurs possibles.
Le tableau 2.1 montre les combinaisons possibles dentrees et leurs sorties correspon-
dantes pour laddition binaire. Le Cin est le report dentree : cest le surplus de laddition a`
la position precedente. Le Cout est le report de sortie : le surplus qui sera ajoute a` laddition
des bits de la position suivante.
X Y Cin S Cout
0 0 0 0 0
0 0 1 1 0
0 1 0 1 0
0 1 1 0 1
1 0 0 1 0
1 0 1 0 1
1 1 0 0 1
1 1 1 1 1
Un exemple daddition binaire est montre a` la figure 2.1. Il y a debordement dans cet
exemple : le report de sortie est 1 a` la fin de laddition, mais il ny a pas de bit de reserve
pour ce report. Dans lexemple, on est dans un syst`eme a` 8 bits : le report de sortie irait a`
la place du 9e bit, mais cette position nexiste pas.
Debordement
1 1 1 1 1
X 1 0 1 1 1 1 1 0 190
Y + 1 0 0 0 1 1 0 1 + 141
0 1 0 0 1 0 1 1 S 331
1 0 1 1 1 1 0 0 Cout
Le tableau 2.2 montre les combinaisons possibles dentrees et leurs sorties correspon-
dantes pour la soustraction binaire. Le Bin est lemprunt dentree : cest la valeur quil
faut aller chercher a` la position plus importante pour effectuer la soustraction. Le Bout est
lemprunt de sortie : valeur quon doit aller chercher a` la position precedente.
Un exemple daddition binaire est montre a` la figure 2.2. Le processus est un peu
plus complexe que laddition : lorsquon doit emprunter un bit pour faire la soustraction,
lemprunt se propage a` travers les colonnes jusqu`a ce quon trouve un 1. Dans lexemple,
lorsquil faut faire un emprunt a` la colonne 3, on doit chercher jusqu`a la colonne 6 pour
trouver un 1. Le 100 devient donc 011 + 1 : le 011 sont les bits modifies, et le +1 est
lemprunt.
X Y Bin D Bout
0 0 0 0 0
0 0 1 1 1
0 1 0 1 1
0 1 1 0 1
1 0 0 1 0
1 0 1 0 0
1 1 0 0 0
1 1 1 1 1
0 10 1 1 10 10
X 1 1 1 0 0 1 0 1 229
Y 0 0 1 0 1 1 1 0 46
1 0 1 1 0 1 1 1 D 183
2.4
Representation
des nombres negatifs
2.4.1
Representation avec le MSB
Dans la representation avec MSB, le MSB represente le signe : un 0 veut dire un chiffre
positif, et un 1 veut dire un chiffre negatif. Par exemple, le chiffre 010101012 = +8510 , et
110101012 = 8510 . Le bit de signe est celui le plus a` gauche (le MSB). On perd donc 1 bit
pour representer lamplitude des chiffres. Dans un syst`eme a` n bits, les valeurs possible
sont de :
(2n1 1) a` (2n 1)
Pour n = 4, les valeurs possibles sont de 7 a` 7. La valeur zero a deux possibilites : 1000 ou
0000.
2.4.2
Methode
de complements
r n D = [(r n 1) D] + 1 (2.3)
Exemple 6
Dans ce cas-ci, la base est 10 (r = 10), on utilise 4 chiffres (n = 4), et le chiffre est
D = 1849. Le complement a` 10 est :
h i
C = (104 1) 1849 + 1 = 8151
Une autre methode de faire le calcul est de prendre le complement de chaque chiffre,
individuellement, puis additionner 1 au total. Le complement de chaque chiffre (`a la
position x) est (r 1) dx .
Exemple 7
Dans ce cas-ci, la base est 10 (r = 10), et le complement par chiffre est (10 1)
dx .
9 9 9 9
1 8 4 9
8 1 5 0 + 1 = 8151
2.4.3
Complement a` 2
Le complement a` 2 (twos complement) est tr`es utilise : cest le syst`eme utilise dans les
ordinateurs. Cest un syst`eme de representation pour les chiffres binaires. Dans ce cas-ci,
la plage de valeurs possible est de (2n1 ) a` +(2n1 1), pour un nombre a` n bits.
Exemple 8
1710 = 00010001
11101110
+1
11101111 = 1710
2.4.4
Complement a` 1
Exemple 9
1710 = 00010001
11101110 = 1710
2.5
Addition et soustraction en complement a` 2
+3 0011 2 1110
+ +4 0100 + 6 1010
+7 0111 8 1 1000
+6 0110 +4 0100
+ 3 1101 + 7 1001
+3 1 0011 3 1101
3 1101 +5 0101
+ 6 1010 + +6 0110
9 1 0 1 1 1 = +7 +11 1 1 0 1 1 = 5
Les codes binaires sont lensemble des r`egles ou conventions qui permettent de representer
les chiffres decimaux en en code binaire.
2.6.1
Decimal code binaire
Le decimal code binaire (DCB, ou BCD, binary coded decimal en anglais) est un code
communement utilise. La representation est montree a` la figure 2.5.
Decimal Code
0 0000
1 0001
2 0010
3 0011
4 0100
5 0101
6 0110
7 0111
8 1000
9 1001
Le decimal code binaire nest pas la meme chose que la conversion decimale a` binaire.
Par exemple, en code binaire le nombre 13 est 1101, mais en DCB cest 00010011 (chaque
chiffre est convertit separement). Dans les ordinateurs (ou microcontroleurs), les operations
sont effectuees sur le code binaire et non sur le DCB.
Le code Gray est une autre methode pour coder des nombres en format binaire. Cest
un code ou` seulement 1 bit change entre chaque nombre successif. La figure 2.6 montre le
code Gray pour un syst`eme a` 3 bits.
Le code Hamming permet de detecter et corriger des erreurs dans des sequences de
bits. On calcul k bits de parite a` partir de n bits de donnees (k < n). Les bits de parite sont
places a` des positions qui sont des puissances de 2. Les n bits de donnees sont places dans
les positions restantes. La figure 2.7 montre un exemple de position des bits de parite et
des bits de donnees, pour un mot de 8 bits.
Position 1 2 3 4 5 6 7 8 9 10 11 12
Valeur P1 P2 d1 P4 d2 d3 d4 P8 d5 d6 d7 d8
Le j e bit de parite (ou` j = 1, 2, 3, ...k) est calcule en faisant des operations xor (ou
exclusifs) avec les bits de donnees dont les positions, lorsque presentees en binaire, sont
des 1. La figure 2.8 montre le calcul des bits de parite pour un mot de 8 bits.
Colonne
Position 4321
P1 0001
P2 0010
0011
P4 0100
0101
0110
0111
P8 1000
1001
1010
1011
1100
Figure 2.8 Code Hamming et calcul des bits de parite pour un mot de 8 bits
Exemple 10
P1 = XOR(d1 , d2 , d4 , d5 , d7 ) = 1 1 0 0 0 = 0
P2 = XOR(d1 , d3 , d4 , d6 , d7 ) = 1 0 0 1 0 = 0
P4 = XOR(d2 , d3 , d4 , d8 ) = 1 0 0 0 = 1
P8 = XOR(d5 , d6 , d7 , d8 ) = 0 1 0 0 = 1
avoir un code special pour representer ces caract`eres alphanumeriques. Le syst`eme ASCII
(American Standard Code for Information Interchange) est un code tr`es utilise. Cest un code
a` 7 bits. Cependant, il ne permet pas de representer les caract`eres speciaux de plusieurs
langages du monde ; de plus en plus, on pref`ere le format UTF-8 (Unicode), qui permet de
representer beaucoup plus de caract`eres speciaux. Le tableau 2.3 presente le code ASCII.
b7 b6 b5
b4 b3 b2 b1 000 001 010 011 100 101 110 111
0000 NUL DLE SP 0 @ P p
0001 SOH DC1 ! 1 A Q a q
0010 STX DC2 2 B R b r
0011 ETX DC3 # 3 C S c s
0100 EOT DC4 $ 4 D T d t
0101 ENQ NAK % 5 E U e u
0110 ACK SYN & 6 F V f v
0111 BEL ETB 7 G W g w
1000 BS CAN ( 8 H X h x
1001 HT EM ) 9 I Y i y
1010 LF SUB * : J Z j z
1011 VT ESC + ; K [ k {
1100 FF FS , < L \ l |
1101 CR GS = M ] m }
1110 SO RS . > N n
1111 SI US / ? O o DEL