syst_numération(1)
syst_numération(1)
syst_numération(1)
I- Systèmes de numération
Le système de numération binaire est le plus important de ceux utilisés dans les circuits
numériques, bien qu'il ne faille pas pour autant négliger l'importance d'autres systèmes. Le
système décimal revêt de l'importance en raison de son acceptation universelle pour représenter
les grandeurs du monde courant. De ce fait, il faudra parfois que des valeurs décimales soient
converties en valeurs binaires avant d'être introduites dans le circuit numérique. Par exemple,
lorsque vous composez un nombre décimal sur votre calculatrice (ou sur le clavier de votre
ordinateur), les circuits internes convertissent ce nombre décimal en une valeur binaire.
De même, il y aura des situations où des valeurs binaires données par un circuit numérique
devront être converties en valeurs décimales pour qu'on puisse les lire. Par exemple, votre
calculatrice (ou votre ordinateur) calcule la réponse à un problème au moyen du système
binaire puis convertit ces réponses en des valeurs décimales avant de les afficher.
où a i est un chiffre tel que 0 ≤ a i ≤ b − 1 , les i sont des entiers positifs et n est l’exposant de
b du chiffre de poids fort. Les bi sont appelés poids ou rang et indique la grandeur de la
quantité représenté.
On note que le chiffre 3 est celui qui a le poids le plus élevé (MSB) et le chiffre 7 a le poids le
plus faible (LSB).
Le système de numération binaire n’est qu’une autre façon de représenter les quantités. A
première vue, ce système semble plus complexe que le décimal ; il est pourtant plus simple
puisqu’il ne possède que deux chiffres. Le binaire est donc un système à base de 2 dont les
deux chiffres binaires, ou bits, sont le 1 et le 0.
La position du 1 ou du 0 dans un nombre binaire indique son poids positionnel et détermine sa
valeur dans le nombre, tout comme nous l’avons vu pour le système décimal. Dans un nombre
binaire, les poids positionnels correspondent à des puissances de deux.
Exemple : (1101,011) 2 = 1 × 23 + 1 × 2 2 + 0 × 21 + 1 × 20 + 0 × 2 −1 + 1 × 2 −2 + 1 × 2 −3 ; avec 23 le
dans la base b, on commence par diviser N par b. Chaque nouveau quotient est ensuite divisé
par b jusqu’à ce que le quotient soit 0. Les restes générés par chacune des divisions forment
le nombre N dans la base b. Le premier reste produit devient le bit de poids le plus faible
(LSB) du nombre N dans la base b, alors que le dernier reste produit devient le bit de poids le
plus fort (MSB).
Exemple :
* Convertissez le nombre (45)10 en son équivalent binaire.
45 2
1 22 2
0 11 2
1 5 2
1 2 2
0 1 2
1 0
(45)10 = (101101)2
* Convertissez le nombre (214)10 en son équivalent hexadécimal.
214 16
6 13 16
13 0
(214)10 = (D6)16
• Conversion d’un nombre de base b quelconque en décimal
Tout nombre écrit dans une base b quelconque peut être transformé en son équivalent décimal
simplement en additionnant les termes obtenus du produit de chaque chiffre par son poids
positionnel.
Exemple :
* Convertissez le nombre (11011)2 en son équivalent décimal.
(11011)2 = 1× 24 + 1× 23 + 0 ×22 + 1× 21 + 1× 20
(11011)2 = (27)10
* Convertissez le nombre (377)8 en son équivalent décimal.
(377)8 = 3 × 82 + 7 × 81 + 7 × 80
(377)8 = (255)10
• Conversion octal–binaire et binaire–octal
La conversion octal – binaire s’effectue en transformant chaque chiffre du nombre octal en son
équivalent binaire de trois chiffres. L’opération inverse consiste à faire avec le nombre binaire
des groupes de trois bits en partant du chiffre de poids le plus faible, puis de convertir ces
triplets en leur équivalent octal ; au besoin on ajoute des zéros à gauche du bit de poids le plus
fort pour obtenir un nombre juste de triplets.
Exemple :
* Convertissez (376)8 en binaire.
3 7 6 Chiffre décimaux
011 111 110 Equivalent binaire
(376)8 = (011111110)2
* Convertissez (1101110011)2 en octal.
001 101 110 011 Triplet
1 5 6 3 Equivalent octal
(1101110011)2 = (1563)8
• Conversion hexadécimal – binaire et binaire - hexadécimal
La conversion hexadécimal – binaire s’effectue en transformant chaque chiffre du nombre
hexadécimal en son équivalent binaire de quatre chiffres. L’opération inverse consiste à faire
avec le nombre binaire des groupes de quatre bits en partant du chiffre de poids le plus faible,
puis on substitue à chaque groupe son chiffre hexadécimal équivalent ; au besoin on ajoute des
zéros à gauche pour obtenir un dernier groupe de 4 bits.
Exemple :
* Convertissez (376)16 en binaire.
3 7 6 Chiffre hexadécimal
0011 0111 0110 Equivalent binaire
(376)16 = (001101110110)2
* Convertissez (11101110011)2 en hexadécimal.
0111 0111 0011 Nombre binaire
7 7 3 Equivalent hexadécimal
(11101110011)2 = (773)16
Retenue
0,3125 × 2 = 0,625 0 MSB
0,625 × 2 = 1,25 1
0,25 × 2 = 0,50 0
0,50 × 2 = 1,00 1 LSB
L’équivalent binaire de (24)10 est (11000)2
L’équivalent binaire de (24,3125)10 est (11000, 0101)2
Il faut beaucoup de bits pour représenter des nombres entiers de très grande valeur. Un autre
problème surgit lorsqu’il faut représenter des nombres possédant une partie entier et une partie
fractionnaire, comme 23,5618. Le système des nombres à virgule flottante, qui repose sur le
principe de notation scientifique, permet de représenter des nombres de très grande ou de très
petite valeur et/ou des nombres possédant une partie entier et une partie fractionnaire sans
augmenter le nombre de bits.
Un nombre à virgule flottante, également appelé nombre réel, comprend deux parties et un
signe. La mantisse est la partie qui représente la grandeur du nombre à virgule flottante.
L’exposant est la partie qui désigne la quantité de rangs avec laquelle la virgule décimale ou
binaire est décalée.
La mantisse est 0,2415068 et l’exposant est 9. Un entier exprimé en nombre à virgule flottante
doit être normalisé, en ce sens q’il faut déplacer la virgule décimale à la gauche de tous les
chiffres afin que la mantisse devienne un nombre fractionnaire. L’exposant devient alors une
puissance de 10. De cette façon, le nombre à virgule flottante s’écrit :
0,2415068 × 109
Pour les nombres à virgule flottante binaires, le format est défini par la norme ANSI/IEEE
754-1985 selon trois notations : précision simple, précision double et précision étendue. Leur
format est fondamentalement identique, à l’exception du nombre de bits. Les nombres à virgule
flottante de précision simple possèdent 32 bits, ceux de précision double ont 64 bits, alors que
les nombres de précision étendue comportent 80 bits.
Dans la notation du standard de précision simple pour les nombres binaires, le bit de signe (S)
est celui situé le plus à gauche, l’exposant (E) inclut les 8 bits suivants et la mantisse ou partie
fractionnaire (F) comprend les 23 bits de droite, tel qu’illustré ci-dessous.
Puisqu’il s’agit d’un nombre positif, le bit de signe (S) est 0. L’exposant polarisé de l’exposant
réel 12, s’obtient en ajoutant 127 (12 + 127 = 139). L’exposant polarisé (E) est donc représenté
par le nombre binaire 10001011. La mantisse est la partie fractionnaire (F) du nombre binaire
0,011010010001 dans cet exemple. Comme il y a toujours un 1 à la gauche de la virgule binaire
dans l’expression de puissance de 2, il n’est pas inclus dans la mantisse. Le nombre à virgule
flottante complet est donc :
S E F
0 10001011 01101001000100000000000
Pour déterminer la valeur d’un nombre binaire déjà écrit en notation à virgule flottante, on
utilise l’approche générale exprimée dans la formule suivante :
1 10010001 10001110001000000000000
Comme les calculateurs numériques traitent aussi bien les nombres négatifs que les nombres
positifs, une certaine convention est adoptée pour représenter le signe du nombre (+ ou -).
Généralement, un autre bit appelé bit de signe est ajouté au nombre. La convention la plus
courante consiste à attribuer au nombre positif le bit de signe 0 et au nombre négatif le bit de
signe 1. Le nombre est donc stocké en mémoire en deux parties dont l’une est réservée à la
valeur absolue du nombre en binaire et l’autre, placée à gauche, au bit de signe.
Exemple : Nombre décimal +25 exprimé en un nombre binaire signé de 8 bits avec la notation
signe-grandeur.
0 0 0 1 1 0 0 1
1 0 0 1 1 0 0 1
Bien que cette notation signe–grandeur soit directe, les calculateurs numériques n’y ont
généralement pas recours, en raison de la complexité des circuits qui matérialisent cette
notation d’où l’utilisation dans ces machines de la notation en complément à 2 pour
représenter les nombres signés.
Le complément à 1 d’un nombre binaire s’obtient en changeant chaque 0 par 1 et chaque 1 par
0. Autrement dit, en complémentant chaque bit du nombre.
Exemple :
1 0 1 1 0 0 1 0 Nombre binaire
0 1 0 0 1 1 0 1 Complément à 1
On va considérer un circuit additionneur à deux entrées sur lesquelles sont disponibles deux
mots de quatre bits.
Exemple :
6 0. 0110
+ 3 + 0. 0011
9 0.1001
On effectue l’opération de la même manière que dans le deuxième cas, seulement que le
résultat sera négatif. Alors pour avoir le résultat final, on procède à la complémentation à 2 du
résultat de l’addition codée.
Exemple :
3 0.0011
-7 + 1.1001 Complément à 2 de 0111
-4 1.1100
Le résultat final de l’opération d’addition est le complément à 2 de 1.1100 qui est 1.0100.
C’est le même cas que précédemment, le résultat de la somme codée sera négatif d’où sa
complémentation à 2 pour avoir le résultat final.
Exemple :
-3 1.1101 Complément à 2 de 0011
- 7 + 1.1001 Complément à 2 de 0111
- 10 1.0110
Le résultat final de l’opération d’addition codée est le complément à 2 de 1.0110 qui est
1.1010.
Remarque :
Dans chacun des exemples d’addition et de soustraction que l’on vient d’étudier, les nombres
que l’on a additionnés étaient constitués à la fois d’un bit de signe et de 4 bits de grandeur. Les
réponses aussi comportaient un bit de signe et 4 bits de grandeur. Toute retenue faite sur le bit
de sixième rang était rejetée. De même, il faut que le résultat de l’opération reste inférieur
strictement à (16)10 pour ne pas avoir un dépassement de capacité.
Exemple :
9 0.1001
+8 0.1000
1 0001
bit de signe
Le bit de signe de la réponse est celui d’un nombre négatif, ce qui est manifestement une
erreur. La réponse devrait être +17. Etant donné que la grandeur est 17, il faut plus de 4 bits
pour l’exprimer, et il y a donc un dépassement sur le rang du bit de signe.
Les circuits numériques fonctionnent avec des nombres binaires exprimés sous une forme ou
sous une autre durant leurs opérations internes, malgré que le monde extérieur soit un monde
décimal. Cela implique qu’il faut effectuer fréquemment des conversions entre les systèmes
binaire et décimal. On peut avoir plusieurs combinaisons de bits 0 et 1 pour une même valeur
décimale dont chaque combinaison correspond à un code.
Quand on fait correspondre à un nombre décimal son équivalent binaire, on dit qu’on a fait un
codage binaire pur.
V-2-1- Généralités
Pour réaliser ces codes, il faut 10 combinaisons différentes de bits 0 et 1 afin de pouvoir
réaliser les 10 symboles du système décimal.
1 seul bit permet 2 combinaisons : 0 ou 1
2 bits permettent 4 combinaisons : 00, 01, 10, 11
4 bits permettent 16 combinaisons : 0000, 0001,…..,1111
La réalisation de 10 combinaison implique donc l’emploi d’au moins 4 bits et il va donc falloir
faire un choix de 10 combinaison parmi les 16 possibles.
Le choix parmi tous les codes possibles est effectué en fonction d’un certain nombre de
critères.
Dans ce code chaque chiffre du nombre décimal doit être codé séparément par un groupe de 4
bits.
Exemple : 2571 s’écrit dans ce code : 0010 0101 0111 0001
Exemple 1 : 47 + 35 = 82
0100 0111
+ 0011 0101
0111 1100
+ 1 0110
1000 0010
On rencontre ici un mot codé qui ne correspond pas à une valeur connue ; il s’agit 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. Pour résoudre ce problème,
on ajoute (6)10 = (0110)2 à ce mot codé inconnu afin de prendre en considération le fait qu’on
saute six représentations codées non valides. Si un report est produit, il sera ajouté à la somme
DCB des chiffres du rang suivant.
Exemple 2 : 95 + 83 = 178
1001 0101
+ 1000 0011
1 0001 1000
+ 0110
0001 0111 1000
Dans le cas où l’addition de deux chiffres donne un report (celui-ci est additionné avec le
chiffre de rang immédiatement à gauche), on ajoute une correction de (0110)2 au résultat de la
somme.
♦ Code majoré de trois (DCB+3)
Le code majoré de trois d’un nombre décimal se trouve de la même manière que le code DCB,
sauf qu’on ajoute trois à chaque chiffre décimal avant d’opérer la conversion.
Nbre Nbre
8 4 2 1 8 4 2 1
décim décim
0 0 0 1 1 5 1 0 0 0
1 0 1 0 0 6 1 0 0 1
2 0 1 0 1 7 1 0 1 0
3 0 1 1 0 8 1 0 1 1
4 0 1 1 1 9 1 1 0 0
Nbre 2 4 2 1
0 0 0 0 0
1 0 0 0 1
2 0 0 1 0
3 0 0 1 1
4 0 1 0 0
5 1 0 1 1
6 1 1 0 0
7 1 1 0 1
8 1 1 1 0
9 1 1 1 1
Le code gray est un code non pondéré et ne convient pas aux calculs arithmétiques, en ce sens
qu’il n’y a pas de poids spécifiques qui correspondent aux positions des bits. Ce code est
caractérisé par le fait qu’en passant d’une combinaison à la suivante un seul bit change de
valeur, ce qui minimise les erreurs lors du codage. Comme par exemple les codeurs à
positionnement rotatif, où la prédisposition aux erreurs augmente selon la quantité de bits
changés entre deux nombres consécutifs d’une séquence.
Le tableau suivant énumère le code gray de 4 bits pour les nombres décimaux de 0 à 15.
Pour effectuer la conversion d’un nombre binaire en code gray, on procède selon les règles
suivantes :
1- le bit de poids le plus fort du code gray, situé à l’extrême gauche, est le même que le
MSB correspondant au nombre binaire.
2- En vous déplaçant de gauche à droite, additionnez chaque paire de bits adjacente du
code binaire pour obtenir le bit suivant du code gray. Rejetez les retenues.
Exemple :
1 0 1 1 0 Binaire
1 1 1 0 1 Code Gray
Pour effectuer la conversion d’un nombre codé en gray en code binaire, on procède selon les
règles suivantes :
1- Le bit de poids le plus fort du code binaire, situé à l’extrême gauche, est identique au bit
correspondant au code gray.
2- Additionnez chaque nouveau bit de code binaire crée au bit de code gray adjacent
suivant (situé immédiatement à droite) en rejetant les retenues.
Exemple :
1 1 0 1 1 Code Gray
1 0 0 1 0 Binaire
C’est un code alphanumérique universel utilisé dans la plupart des ordinateurs. Ce code
comprend 128 caractères et symboles représentés par un code binaire de 7 bits. En réalité, il
s’agit d’un code à 8 bits dont le MSB est toujours égal à 0. Ce code de 8 bits correspond aux
nombres hexadécimaux de 00 à 7F. Le code ASCII sert à coder l’information alphanumérique
transmise entre un ordinateur et ses périphériques d’entrée/sorties comme les écrans de
visualisation ou les imprimantes. Un ordinateur recourt aussi à ce code pour stocker les
informations envoyées par l’opérateur depuis son clavier.
Un grand nombre de système utilisent un bit de parité pour la détection d’erreurs. Tout groupe
de bits comporte un nombre pair ou impair de bit 1. Un bit de parité est associé à un groupe de
bits pour que le nombre total de 1 dans un groupe soit toujours pair ou toujours impair. Un bit
de parité paire donne un total de 1 pair et un bit de parité impaire donne un total de 1 impair.
Un système donné fonctionne avec une parité paire ou une parité impaire, il ne peut pas utiliser
les deux. Par exemple, dans un système fonctionnant avec une parité paire, chaque groupe de
bits reçu est contrôlé pour s’assurer que le total de 1 dans ce groupe correspond à un nombre
pair. Si ce nombre est impair, une erreur s’est produite.
Le tableau suivant illustre comment les bits de parité sont associés aux nombres codés en DCB
pour les parités paire et impaire.