Vous êtes sur la page 1sur 14

Chapitre 2

`
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

Le syst`eme decimal comporte dix symboles : 0, 1, 2, 3, 4, 5, 6, 7, 8 et 9. Chaque position


dun chiffre represente une puissance de 10. Ex :
1734 = 1 1000 + 7 100 + 3 10 + 4 1
51.68 = 5 10 + 1 1 + 6 0.1 + 8 0.01
Donc, sous le syst`eme decimal, un nombre D = d1 d0 .d1 d2 a la valeur

D = . . . d1 101 + d0 100 . + d1 101 + d2 102 + . . .

On appelle 10 la base ou la racine (en anglais radix).

1
`
CHAPITRE 2. SYSTEMES DE NOMBRES ET CODES

Pour tous les syst`emes de nombre, la racine r 2 et le chiffre a` la position i a un poids


ri. La forme generale est :
dp1 dp2 d1 d0 . d1 d2 dn (2.1)
ou` on a p chiffres a` gauche du point et n chiffres a` droite. La valeur du nombre est :
p
X
D= di r i (2.2)
i=n

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

101.0012 = 1 4 + 0 2 + 1 1 + 0 0.5 + 0 0.25 + 0 0.125


= 5.12510

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

Dans ce syst`eme, la base est 8 : r = 8, avec huit symboles : 0, 1, 2, 3, 4, 5, 6 et 7. Un


exemple :
178 = 1 81 + 7 80 = 1510

Gabriel Cormier 2 GELE2442


`
CHAPITRE 2. SYSTEMES DE NOMBRES ET CODES

2.1.4 `
Systeme
hexadecimal

Ce syst`eme est souvent utilise dans la programmation, pour raccourcir lecriture de


chiffres binaires. La base est 16 : r = 16, avec seize symboles : 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B,
C, D, E et F. Exemple :
B65F16 = 11 163 + 6 162 + 5 161 + 15 160 = 4668710

2.2 Conversions de base

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.

Gabriel Cormier 3 GELE2442


`
CHAPITRE 2. SYSTEMES DE NOMBRES ET CODES

Exemple 2

Convertir 17910 en binaire.

179 2 = 89 reste 1 (LSB)


89 2 = 44 reste 1
44 2 = 22 reste 0
22 2 = 11 reste 0
11 2 = 5 reste 1
5 2 = 2 reste 1
2 2 = 1 reste 0
1 2 = 0 reste 1 (MSB)
17910 = 101100112

Exemple 3

Convertir 46710 en octal.

467 8 = 58 reste 3 (LSB)


58 8 = 7 reste 2
7 8 = 0 reste 7 (MSB)
46710 = 7238

Pour convertir les fractions, on multiplie par la base au lieu de diviser.

Exemple 4

Convertir 0.687510 en binaire.

0.6875 2 = 1.3750 d1 = 1 (MSB)


0.3750 2 = 0.75 d2 = 0
0.75 2 = 1.5 d3 = 1
0.5 2 = 1 d4 = 1 (LSB)
0.687510 = 0.10112

Gabriel Cormier 4 GELE2442


`
CHAPITRE 2. SYSTEMES DE NOMBRES ET CODES

Avec des fractions, il est possible davoir des erreurs de conversions. Il faut tronquer la
sequence selon le nombre de bits voulus.

Exemple 5

Convertir 0.310 en binaire.

0.3 2 = 0.6 d1 = 0 (MSB)


0.6 2 = 1.2 d2 = 1
0.2 2 = 0.4 d3 = 0
0.4 2 = 0.8 d4 = 0
0.6 2 = 1.6 d5 = 1
0.6 2 = 1.2 d6 = 1 (LSB)
0.310 = 0.0100112

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.

Precision Reponse Reconversion Erreur


4 bits 0.01002 0.25 0.05
5 bits 0.010012 0.28125 0.01875
6 bits 0.0100112 0.296875 0.003125

Avec plus de bits, lerreur diminue.

2.3 Addition et soustraction binaire

Laddition et la soustraction binaires suivent les meme r`egles que le decimal, sauf quil
ny a que deux valeurs possibles.

2.3.1 Addition binaire

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.

Gabriel Cormier 5 GELE2442


`
CHAPITRE 2. SYSTEMES DE NOMBRES ET CODES

Tableau 2.1 Addition binaire

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

Figure 2.1 Exemple daddition binaire

2.3.2 Soustraction binaire

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.

Gabriel Cormier 6 GELE2442


`
CHAPITRE 2. SYSTEMES DE NOMBRES ET CODES

Tableau 2.2 Soustraction binaire

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

Figure 2.2 Exemple daddition binaire

2.4
Representation
des nombres negatifs

Il existe quelques facons de representer des nombres negatifs. En representation


decimale, on utilise lamplitude et un signe : +49, 53. En representation binaire, on
peut utiliser le MSB, ou utiliser des methodes dites a` complement.

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.

Dans cette methode, il y a cependant quelques desavantages : on a beaucoup de


decisions a` prendre lorsquon fait laddition (ou la soustraction) et on perd un bit pour le
signe. Pour laddition :
Si on a deux nombres de meme signe :

Gabriel Cormier 7 GELE2442


`
CHAPITRE 2. SYSTEMES DE NOMBRES ET CODES

On additionne les amplitudes


Le resultat est de meme signe
Si on a deux nombres de signe different :
Il faut verifier le nombre avec la plus grande amplitude
Soustraire le plus petit du plus grand
Le resultat aura le signe du plus grand

2.4.2
Methode
de complements

Les syst`emes a` complements ont e te introduits pour simplifier loperation de soustrac-


tion. On a deux types de complement : complement a` R, et complement a` R 1.

De facon generale, le complement a` R peut e tre decrit selon :

r n D = [(r n 1) D] + 1 (2.3)

ou` D = dn1 dn2 d1 d0 , et le MSB indique le signe.

Exemple 6

Quel est le complement a` 10 de 184910 ?

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

Quel est le complement a` 10 de 184910 ?

Dans ce cas-ci, la base est 10 (r = 10), et le complement par chiffre est (10 1)
dx .

Gabriel Cormier 8 GELE2442


`
CHAPITRE 2. SYSTEMES DE NOMBRES ET CODES

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

Quel est le complement a` 2 de 000100012 ?

1710 = 00010001

11101110
+1
11101111 = 1710

2.4.4
Complement a` 1

Le complement a` un est un autre syst`eme de representation des nombres negatifs.


Comme le complement a` 2, le MSB indique le signe (1 veut dire un nombre negatif, 0 pour
un nombre positif). On a deux representations pour le zero : 00000000 et 111111111. La
plage de valeurs possibles est : (2n1 1) a` +(2n1 1), pour un nombre a` n bits.

Exemple 9

Quel est le complement a` 1 de 000100012 ?

1710 = 00010001

11101110 = 1710

Gabriel Cormier 9 GELE2442


`
CHAPITRE 2. SYSTEMES DE NOMBRES ET CODES

2.5
Addition et soustraction en complement a` 2

Pour faire laddition et la soustraction dans le syst`eme de complement a` 2, on neglige


le report au-del`a du MSB tant que la somme nexc`ede pas la limite de n bits. Quelques
exemples sont montres a` la figure 2.3.

+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

Figure 2.3 Exemples daddition binaire en complement a` 2

Il y a risque de debordement (overflow) lorsque la somme dune addition depasse le


nombre maximal permis. Pour un syst`eme a` n bits, il y a debordement si la somme est plus
grande que +(2n1 1), ou si la somme est plus petite que (2n1 ). Si on additionne deux
nombres de signe different, il ny a jamais de debordement. Cependant, si on additionne
deux nombres de meme signe, il y a possibilite de debordement. Il y a debordement si
le resultat est de signe different du signe des nombres additionnes. Deux exemples sont
montres a` la figure 2.4. Le debordement est montre en rouge.

3 1101 +5 0101
+ 6 1010 + +6 0110
9 1 0 1 1 1 = +7 +11 1 1 0 1 1 = 5

Figure 2.4 Exemples de debordement

2.6 Codes binaires

Les codes binaires sont lensemble des r`egles ou conventions qui permettent de representer
les chiffres decimaux en en code binaire.

Gabriel Cormier 10 GELE2442


`
CHAPITRE 2. SYSTEMES DE NOMBRES ET CODES

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

Figure 2.5 Decimal code binaire

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.

2.6.2 Code Gray

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.

Decimal Binaire Gray


0 000 000
1 001 001
2 010 011
3 011 010
4 100 110
5 101 111
6 110 101
7 111 100

Figure 2.6 Code Gray a` 3 bits

Gabriel Cormier 11 GELE2442


`
CHAPITRE 2. SYSTEMES DE NOMBRES ET CODES

2.6.3 Code Hamming

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

Figure 2.7 Code Hamming pour un mot de 8 bits

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

Le calcul des bits de parite est comme suit :


P1 = XOR(3, 5, 7, 9, 11) = XOR(d1 , d2 , d4 , d5 , d7 ) (2.4)
P2 = XOR(3, 6, 7, 10, 11) = XOR(d1 , d3 , d4 , d6 , d7 ) (2.5)
P4 = XOR(5, 6, 7, 12) = XOR(d2 , d3 , d4 , d8 ) (2.6)
P8 = XOR(9, 10, 11, 12) = XOR(d5 , d6 , d7 , d8 ) (2.7)
Exemple : Dans la colonne 1 (pour calculer P1 ), il y a un 1 aux rangees 3, 5, 7, 9, et 11, si on
ignore les rangees qui correspondent aux bits de parite (on saute les rangees 1, 2, 4 et 8).
Dans la colonne 2, pour calculer P2 , il y a des 1 aux rangees 3, 6, 7, 10 et 11.

Gabriel Cormier 12 GELE2442


`
CHAPITRE 2. SYSTEMES DE NOMBRES ET CODES

Pour verifier si le message a e te transmit correctement, on fait un processus semblable


a` celui du calcul des bits de parite, sauf que les termes utilises dans le calcul inclus ceux
des bits de parite :

C1 = XOR(1, 3, 5, 7, 9, 11) (2.8)


C2 = XOR(2, 3, 6, 7, 10, 11) (2.9)
C4 = XOR(4, 5, 6, 7, 12) (2.10)
C8 = XOR(8, 9, 10, 11, 12) (2.11)

On forme ensuite un nombre C = C1 C2 C4 C8 .


Si C = 0, il ny a pas derreur.
Si C = X, il y a erreur a` la position X : on doit prendre le complement du bit a`
la position X pour corriger lerreur. Exemple : pour un mot a` 8 bits, si on trouve
C = 0101, le bit a` la position 5 contient une erreur.

Exemple 10

Calculer le code de Hamming pour le mot suivant : 11000100.

On calcule les bits de parite :

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

On transmet le message : 001110010100.

On peut augmenter lefficacite de la detection derreur en ajoutant un bit de parite a` la


fin de la sequence. Ceci permet de detecter 2 erreurs. A` la reception, on calcule C, comme
le code de Hamming normal, et on verifie la parite P .
Si C = 0 et P = 0, il ny a pas derreur.
Si C , 0 et P = 1, il y a une erreur quon peut corriger.
Si C , 0 et P = 0, il y a deux erreurs (mais on ne peut pas les corriger).
Si C = 0 et P = 1, alors P est une erreur.

2.6.4 Code ASCII

Les syst`emes numeriques (ordinateurs) ne manipulent pas seulement des nombres,


mais aussi des lettres et des signes ou caract`eres speciaux (comme !, $, etc). Il faut donc

Gabriel Cormier 13 GELE2442


`
CHAPITRE 2. SYSTEMES DE NOMBRES ET CODES

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.

Tableau 2.3 Tableau 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

Gabriel Cormier 14 GELE2442

Vous aimerez peut-être aussi