Telechargé par Imen chraiet

chapitre 1

publicité
Cours Systèmes logiques & Architecture des ordinateurs
Enseignante : Hemdani Asma
LSI 1ere année
2021-2022
Chapitre 1 : Systèmes de numération et codes
I-
Introduction
Un système de numération permet de coder une information (texte, image, nombre, parole …) en lui
attribuant un symbole ou combinaison de symboles compréhensible par le processeur. Le système
conventionnel de comptage en base 10 est incompatible avec la machine, d'où la nécessité d'introduire
d'autres systèmes de numération. Les systèmes de numération binaire et Hexadécimal sont les plus
utilisés dans le domaine de l'électronique et de l'informatique.
II-
Base des systèmes de numération
La base est le nombre qui sert à définir le système de numération. On définit :
La base de système décimal est 10, si on utilise les dix chiffres du système décimal (0,1,2,3…ect)
La base de système binaire est 2, si on utilise une variable binaire, on ne dispose que deux chiffres ou
bits qui sont 0 et 1.
La base de système octal est 8, si on utilise huit chiffres de (0,1,2…7)
La base de système hexadécimal est 16, si on utilise les dix chiffres plus des lettres (0,1,2,ect…et
A,B,C,D,E,F)
Quelque soit la base employée, Tout nombre N peut se décomposer en fonction des puissances
entières de la base de son système de numération. Cette décomposition s’appelle la forme
polynomiale du nombre N et qui peut être donnée par la relation suivante :
Avec : bi chiffre de la base de rang i
ai puissance de la base a d'exposant de rang i
Exemples :
Base 10 ➔ (1986)10 =1*103+9*102+8*101+6*100
Base 2 ➔ (10010)2 =1*24 +0*23+0*22+1*21+0*20= 16+2=(18)10
1- Le système décimal
Chaque chiffre peut avoir dix valeurs différentes, 0, 1, 2, 3, 4, 5, 6, 7, 8 et 9. Tout nombre écrit dans le
système décimal vérifie la relation polynomiale.
Exemples :
(732)10 = 7*102+3*101+2*100
7 représente le poids fort du nombre et 2 représente le poids faible
•
(345,567)10 = 3*102+4*101+5*100+5*10-1+6*10-2+7*10-3
2- Le système binaire
Chaque chiffre peut avoir deux valeurs différentes 0 et 1. Chacun d'eux est appelé bit.
(10110)2=1*24 +0*23+1*22+1*21+0*20= 16+4+2=(22)10
Bit du poids faible noté LSB
Bit du poids fort noté MSB
(10110,1011)2= 1*24 +0*23+1*22+1*21+0*20+1*2-1+0*2-2+1*2-3+1*2-4=(22,6875)10
3- Le système octal
Ce système a comme base huit valeurs différentes 0, 1, 2, 3, 4, 5, 6 et 7. Cette base obéira à la même
forme polynomiale.
(6057)8= 6*83+0*82+5*81+7*80= (3119)10
.
(6057,14)8= 6*83+0*82+5*81+7*80+1*8-1+4*8-2= (3119)10
4- Le système hexadécimal
Ce système a comme base 16 chiffres dont les valeurs différentes 0, 1, 2, 3, 4, 5, 6, 7, 8 , 9, A, B, C,
D, E et F. Cette base obéira à la même forme polynomiale, comme suit :
N1=(356)16=3*162+5*161+6*160=(854)10
N2=(2AF)16=2*162+10*161+15*160=(687)10
N3=(81,B)16=8*161+1*160+11*16-1=(129.6875)10
5- Tableau récapitulatif de correspondance entre les bases
Base 10
Base 2
Base 8
Base 16
0
0
0
0
1
1
1
1
2
10
2
2
3
11
3
3
4
100
4
4
5
101
5
5
2
6
110
6
6
7
111
7
7
8
1000
10
8
9
1001
11
9
10
1010
12
A
11
1011
13
B
12
1100
14
C
13
1101
15
D
14
1110
16
E
15
1111
17
F
III- Conversion d'un nombre d'une base à une autre
Il s'agit du processus de conversion d'un nombre écrit dans une base b1 à une autre base b2.
1- Le codage
La conversion d'un nombre décimal en une autre base non décimale est appelée codage
1.1 Codage en un nombre binaire
Le principe consiste à faire des divisions successives du nombre sur 2 et prendre le reste de la division
39 2
1 19 2
1 9 2
1 4 2
0 2
dans l'ordre inverse.
Exemple 1: (39)10 = (?)2
2
1
0
2
1 0
Après la division, le nombre recherché est : 100111
1.2 Codage en un nombre octal
On utilise la méthode de divisions successives par 8 jusqu'à un quotient égale à 0. Les restes
successifs pris de bas en haut forment le nombre codé en octal.
Exemple 1: (423)10 = (?)8
423 8
7 52 8
4 6 8
6 0
3
D'où (423)10 = (647)8
1.3 Codage en un nombre hexadécimal
On utilise la méthode de divisions successives par 16 jusqu'à un quotient égale à 0. Les restes
successifs pris de bas en haut forment le nombre code en hexadécimal.
Exemple 1: (423)10 = (?)16
423 16
7 26 16
10 1 16
1 0
D'où (423)10 = (1A7)16
2- Le décodage
Le décodage est la conversion d'un nombre quelconque écrit en base m (octal, binaire ou
hexadécimal) en base décimal. La forme générale est :
i −1
( y)10 =  X n . mn
n=0
m : la base


avec i : nombre de symbole

n : le rang

Exemples
(100111)2 =1*25+0*24+0*23+1*22+1*21+1*20=(39)10
(647)8 =6*82+4*81+7*80=384+32+7=(423)10
(1A7)16 =1*162+10*161+7*160=256+160+7=(423)10
3- Le transcodage
C’est la conversion d'une base A à une base B (A et B ne sont pas des bases décimales). L’idée est de
convertir le nombre de base A à la base 10 puis coder le résultat à la base B.
Exemple : (34)8 ➔ (?)2
(34)8=3*81+4*80=(28)10=(11100)2
Une autre méthode plus pratique :
4
Conversion Octal ➔ Binaire
En octal, chaque symbole de la base s'écrit sur 3 bits en binaire. L’idée est de remplacer chaque
symbole dans la base octale par sa valeur en binaire.
Exemples :
(34)8 =(011100)2
Conversion Binaire ➔ Octal
L’idée est de faire des regroupements de 3 bits puis remplacer chaque regroupement par la valeur
octale correspondante. Le regroupement se fait de droite à gauche.
Exemples :
(11001010010110)2 =(31226)8
Conversion Hexadécimal ➔ Binaire
Chaque symbole de base hexadécimal s'écrit sur 4 bits.
Hexadécimal ➔ (1
Binaire
A
F
3 )16
➔ (0001 1010 1111 0011)2
Conversion Binaire ➔ Hexadécimal
Binaire
➔ (1101 0000 1100)2
Hexadécimal ➔ (D0C)16
Conversion Octal  Hexadécimal
Cette conversion se fait en passant par le système binaire
Exemple : (C3,47)16 ➔ (?)8
Hexadécimal➔Binaire➔octal
Hexadécimal ➔ ( C 3, 4 7 )16
Binaire
➔ (1100 0011,0100 0111)2
Octal
➔(303,213)8
Pour convertir un nombre binaire en un nombre octal, il faut regrouper les bits du nombre
binaire par trois en allant vers la gauche à partir de la virgule pour la partie entière, et vers la
droite pour la partie fractionnaire, puis chaque groupe est remplacé par le chiffre octal
correspondant.
IV- Calcul arithmétique
Dans cette partie, on définit :
✓ Les nombres binaires non signés (pas de bit de signe) et le calcul arithmétique se fait comme dans
le système décimal (base 10).
5
✓ Les nombres binaires signés dont on tient comptent de signe positif ou négatif du nombre et on
considère un bit de signe.
1- Opérations arithmétiques pour les nombres non signés
On procède de la même façon que celle utilisée dans la base décimale. Ainsi, il faut effectuer
l’opération dans la base 10, ensuite convertir le résultat par colonne à la base B.
1.1 Opérations d'addition
•
Cas du système binaire
Pour effectuer l'addition sur des nombres non signés, il faut que le nombre de bit soit suffisant pour
coder le nombre.
Exemple :
N1= (254)10 ➔ (11111110)2, N1 est représenté en 8 bits
N2= (187)10 ➔ (10111011)2, N2 est représenté en 8 bits
11111110
+
10111011
somme
retenue
0+0
0
0
0+1
1
0
1+1
0
1
N = N1+ N2 = (441)10 nécessite 9 bits. En effet, sur 8 bits, on peut coder que [0, 28-1] c'est-à-dire [ 0,
255] et sur 9 bits, on peut coder que [ 0, 29-1] c'est-à-dire [ 0, 511].
Remarque : si on prévoit des registres de 8 bits pour contenir les opérations et le résultat, on obtient
un résultat erroné et on dit qu'il y a un débordement (over flow).
•
Cas du système octal
+
( 2 5 3)8
( 7 1 6) 8
Résultat : (1171)8
•
Cas du système Hexadécimal
(5 3 0 4)16
+ (CC 3 B) 16
6
Résultat : (11F3F)16
(89A27)16
+ ( EE54) 16
Résultat : (9887B)16
1.2 Opérations de soustraction
Cas d'une opération de soustraction de deux opérandes non signées A et B, il faut que A<B.
On peut soustraire les nombres dans les systèmes, binaire, octal ou hexadécimal, en utilisant la même
méthode que le système décimal.
Exemples :
•
En effet:
Cas du système binaire
11111110
−
10111011
101101
−
11011
01000011
010010
0-0
0
1-0
1
1-1
0
0-1
•
1, Il faut prendre 1 de la gauche
Cas du système octal
−
( 7 3 5)8
( 4 7 6) 8
Résultat : (237)8
•
Cas du système hexadécimal
−
(1 5 C E )16
( 7 D 5) 16
Résultat : (DF9)16
1.3 Opérations de multiplication
La multiplication dans les systèmes de numération se fait de la même façon que dans le système
décimal.
7
•
Cas du système binaire
La multiplication dans le système binaire est plus simple que dans celui de système décimal
puisqu’elle s’effectue sur des 0 et 1.
Exemple :
Résultat : (110001110010)2
•
Cas du système octal
Résultat : (3526357)8
•
Cas du système hexadécimal
Résultat : (52B83F8)8
1.4 Opérations de division
La division dans les systèmes de numération se fait de la même façon que dans le système décimal.
•
Cas du système binaire
10011
=
110
Résultat=11
•
Cas du système octal
735
23
=
Résultat : 31
• Cas du système hexadécimal
8
1B39
5B
=
Résultat : 4C
2- Opérations arithmétiques pour les nombres signés
Pour représenter des nombres négatifs et positifs dans une machine, on utilise généralement des
représentations spécifiques. Dans cette partie, on s intéresse au système binaire.
2.1 Représentation exacte
Elle consiste à affecter un bit pour le signe. Par convention : + ➔ 0
et
-➔1
Exemple:
(+ 32)10 ➔
0
10000
Signe
(- 32)10 ➔
1
10000
Cette représentation n’est pas valable par des calculs arithmétiques car elle possède 2 représentions
possibles de zéro (+0 ➔00) et (-0 ➔ 10). D'ou il y a recours à l'utilisation de la notion complément
(CMP).
2.2 Représentation en complément à 2
D'une manière générale, le complément à "b" d'un nombre écrit dans la base "b" est la valeur qu'il faut
ajouter à ce nombre pour obtenir la valeur maximale +1 que l'on peut exprimer (en tenant compte du
format de la base).
CMPb (N) = N* = b n - N
Avec : b la base du système de numération et n le nombre de bit dans N
Méthodes pratiques
Méthode 1
Pour calculer le complément à 2 d'un nombre N, on effectue le CMP 1+1. Sachant le complément à 1
se détermine comme suit :
CMP1 (N) = N cad 0 → 1 et 1 → 0
Exemple :
CMP2 (10110) =...........................................................................
9
Méthode 2
On part du bit de poids le plus faible (bit de droite). Si c'est un zéro, on recopie 0 jusqu'à le premier 1
rencontré. Si c'est un 1, on garde ce premier 1. Ensuite on inverse tous les bits après ce premier 1.
Exemples :
CMP2 (1011 0) =
CMP2 (101010) =
CMP2 (111011) =
Remarque :
Pour revenir d'un nombre CMP2 à un nombre binaire, il faut de nouveau complémenter à 2.
2.3 . Utilisation du complément à 2
Pour faciliter le travail des machines informatiques et pour des circuits électroniques spécifiés (le
circuit réalisant les opérations des nombres signés est celui le même des nombres non signés), on
représente un nombre signé en CMP2.
Remarque : Avec le complément à 2, on peut effectuer des aditions et des soustractions avec le même
circuit.
En CMP2 et avec n bits, on représente les nombres signés
 −2n −1
2n −1 − 1
compris dans l’intervalle
.
Exemple : Sur 4 bits, on représente seulement les nombres compris dans l’intervalle ………………...
Remarque : Il faut toujours vérifier que le résultat tient dans l’intervalle :
 0
2n−1 − 1
 −2n −1
➔ Pour les nombres non signés
2n −1 − 1
➔ Pour les nombres signés
Exemples de calculs
Addition
10
910 + 410
, dans ce cas il faut prévoir 5 bits.
5 bits
+910 →
...........................
+
+ 410 →
...........................
Soustraction :
Exemple 1 : +910 -410, dans ce cas le résultat s'écrit sur 5 bits.
5bits
+910 →
...........................
+
− 410 → ...........................
en effet : CMP2 (+4) = CMP2 (00100) = ............
Exemple 2 : -910 -410, dans ce cas le résultat s'écrit sur 5 bits.
5bits
−910 →
CMP2 (+9) = CMP2 (01001) = ..........................
+
− 410 → CMP2 (+4) = CMP2 (00100) = ..........................
On remarque que le signe de bit est 1 alors le résultat est négatif. Il faut complémenter à 2 pour
retrouver la valeur absolue.
10011 CMP 2 01101 →
V-
Les Codes
L'action de faire correspondre à des nombres, à des lettres ou à des mots un groupe spécial de
symbole s'appelle codage. On distingue deux types de codes :
•
Les codes numériques
•
Les codes alphanumériques
1- Les codes numériques
Parmi les codes les plus utilisés, autre que le binaire, on trouve le code Binary Coded Decimal BCD et
le code GRAY
1.1.Code BCD
11
Le codage en BCD d'un nombre décimal se fait en remplaçant chaque chiffre individuel du nombre
décimal par son équivalent binaire sur 4 bits selon le tableau suivant :
Code décimal
Code B C D
6
0
7
1
8
2
9
3
4
5
On note que les codes 1010, 1011, 1100, 1101, 1110, 1111 sont des combinaisons interdites, on les
appelle des pseudo-tétrades. Autrement dit, seuls dix des 16 combinaisons des 4 bits sont utilisés. Si
l'une des combinaisons "inadmissibles" apparaît dans une machine utilisant le code BCD, c'est
généralement le signe qu'une erreur s'est produite.
Remarque : le code BCD ne constitue pas un système de numération. Il est différent au code binaire
pur.
En effet, quand on code selon le système binaire pur, on prend le nombre décimal dans son intégralité
et on le convertit en binaire, sans le fractionner; par ailleurs, quand on code en BCD, c'est chaque
chiffre individuel qui est remplacé par son équivalent binaire. À titre d'exemple, prenons le nombre
137 et trouvons son nombre binaire pur puis son équivalent BCD:
(137)10=(10001001)2
(137)10=(0001 0011 0111)BCD
Le code BCD nécessite 12 bits pour représenter 137 tandis que le nombre binaire pur n'a besoin que
de 8 bits. Il faut plus de bits en BCD qu'en binaire pur pour représenter les nombres décimaux de plus
d'un chiffre. Comme vous le savez, il en est ainsi parce que le code BCD n'utilise pas toutes les
combinaisons possibles de groupes de 4 bits; c'est donc un code peu efficace.
Le principal avantage du code BCD provient de la facilité relative avec laquelle on passe de ce code à
un nombre décimal, et vice versa. Il ne faut retenir que les groupes de 4 bits des chiffres 0 à 9. C'est
un avantage non négligeable du point de vue du matériel, puisque dans un système numérique ce sont
des circuits logiques qui ont la charge d'effectuer ces conversions.
12
Addition en code BCD
Pour effectuer les opérations d’addition, il faut suivre les étapes suivantes :
- Addition binaire ordinaire des représentations BCD de tous les rangs.
- Pour les rangs où la somme est égale ou inférieure à 9, aucune correction ne s'impose et la somme
est une représentation BCD valide.
- Quand la somme des deux chiffres est supérieure à 9, on ajoute une correction de 0110 pour obtenir
la représentation BCD exacte. Il se produit toujours un report sur le chiffre de rang immédiatement à
gauche, soit lors de l'addition initiale (première étape) ou de l'addition de la correction.
Exemples :
•
Somme égale ou inférieur à 9
Additionnons 5 à 4 en utilisant pour chacun leur représentation BCD
L'addition est effectuée comme une addition binaire normale et la somme est 1001, soit le code BCD
de 9. Voici un autre exemple: additionnons 45 à 33.
•
Somme supérieur à 9
Additionnons 6 et 7 en BCD:
La somme 1101 n'existe pas dans le code BCD; il s'agit de l'une des six représentations codées de 4
bits interdites ou non valides. Cette représentation est apparue parce qu'on a additionné deux chiffres
dont la somme dépasse 9. Dans un tel cas, il faut corriger la somme en additionnant 6 (0110) afin de
prendre en considération le fait qu'on saute six présentations codées non valides:
13
Comme on le montre ci-dessus, l'addition de 0110 à la somme non valide donne la représentation
BCD exacte.
1.2.Code GRAY
On l'appelle aussi code binaire réfléchi. Le code GRAY n'est pas un système de numération donc il
est différent de binaire pur (binaire naturel). Chaque incrémentation ne s’accompagne que d’un seul
changement de bit.
✓ Conversion Binaire pur ➔ GRAY
La conversion du binaire pur au binaire réfléchi s'effectue comme suit :
•
Ecrire le nombre binaire
•
Reproduire le bit le plus fort du code binaire pur
•
Le reste des bits du code GRAY est obtenu en additionnant les bits binaires 2 à 2 à partir de la
gauche sans tenir compte de la retenue comme suit :
Exemple :
Binaire pur : (101011)
Binaire réfléchi (code gray) :
Conversion GRAY ➔ Binaire pur
-
Reproduire le bit le plus fort du code gray
-
Le reste des bits du code binaire pur est obtenu en additionnant le bit bn+1 du binaire pur au bit bn
du binaire réfléchi sans tenir compte de la retenue, comme suit :
14
Exemple :
Binaire réfléchi (code gray) : 111110
Binaire pur :
Les codes alphanumériques : Le code ASCII
Les informations qu’on possède à transmettre peuvent être non seulement des nombres mais aussi des
lettres, des signes de ponctuations et des caractères, etc. D’où l'utilisation des codes alphanumériques
dont le plus utilisé est le code ASCII (American Standard Code for Information Interchange).
Il est utilisé en informatique pour communiquer entre le clavier du micro-ordinateur et l'unité centrale.
On distingue deux codes ASCII : le code ASCII standard et le code ASCII étendu. Le clavier est
équipé d'un circuit spécial qui contrôle ses circuits en permanence. A chaque touche correspond un
mot binaire.
Le code ASCII standard possède 128 caractères ➔ il faut 7 bits, ce code impose des limites à
l'utilisateur car il lui manque des symboles propres à l'écriture de certaines langues.
Le code ASCII étendu possède 256 caractères ➔ il faut 8 bits, c'est le code adopté par tous les microordinateurs IBM.
Chaque code est défini par 3 bits d’ordre supérieur B6B5B4 et 4 bits d’ordre inférieur B3B2B1B0. Le
tableau du code ASCII standard est ci-dessous:
* La lettre "E" correspond au mot binaire (………………..)2 soit ……….. à la base 10.
* La lettre "a" correspond au mot binaire (………………..)2 soit …….. à la base 10.
15
Exemple :
Ecrire le mot "Bonsoir" avec le code ASCII sur 7 bits.
B :…………….., o : ……….., n : ……….. ,s : ……….., o : ……….., : i……….., r : ………..
D’où le code ASCII standard de "Bonsoir" est :
16
Téléchargement