Vous êtes sur la page 1sur 68

CHAPITRE 2

LA REPRÉSENTATION DES DONNÉES

2. LES SYSTEMES DE NUMÉRATION

Nous avons l'habitude de représenter les nombres en utilisant dix symboles différents:
0123456789
C'est ce que nous appelons le système décimal (déci: dix). Il existe cependant d'autres formes
de numération, qui fonctionnent en utilisant un nombre de symboles distincts, par exemple le
système binaire (bi: deux), le système octal (oct: huit), le système hexadécimal (hexa: seize).
En fait, on peut utiliser n'importe quel nombre de symboles différents (pas nécessairement des
chiffres) dans un système de numération; ce nombre de symboles distincts est appelé la base
du système de numération. Le schéma suivant montre les symboles utilisés des principaux
systèmes rencontrés.

Tableau 3: Systèmes de numération

Le système binaire est utilisé en informatique parce qu'il n'a besoin que de deux symboles le
rendant tout à fait approprié pour les circuits électriques qui, eux-mêmes, ne présentent
généralement que deux états possibles: le circuit est allumé (1) ou éteint (0).
Dans le système binaire, les tables d'addition et de multiplication sont très simples, ce qui
facilite l'implantation des algorithmes de calcul:

Figure 2.1: Calcul en binaire

Les données manipulées par un ordinateur ne représentent cependant pas toutes des nombres.
Il faut donc donner à tous les caractères utilisés (lettres de l'alphabet, espaces, caractères de

1
contrôle, instructions, etc.), une forme numérique (codification) avant de pouvoir les traduire
en binaire.
L'ordinateur ne reconnaît et ne traite que des chaînes binaires. Les principaux systèmes de
codification en chaînes binaires seront abordés plus loin. Disons simplement pour l„instant
qu„au lieu de coder tous ces caractères sous forme de nombres décimaux, on utilise le système
binaire et d'autres systèmes de numération, surtout les systèmes octal et hexadécimal.
Ces derniers systèmes sont plus commodes à utiliser, leur base respective étant plus grande
que 2, tout en étant un multiple de 2. Ils produisent des chaînes de caractères plus courtes
qu'en binaire pour une même quantité d'information et, ces chaînes sont plus faciles à traduire
en chaînes binaires que les chaînes correspondantes en notation décimale.
Commençons donc par regarder de plus près ces différents systèmes de numération, et
examinons les moyens de passer d'un système à un autre.

2.1. Bases et exposants


Avant toute chose, il nous faut introduire les concepts de base et d'exposant.
Lorsqu'on utilise le système décimal, on compte de la façon suivante: on énumère tous les
symboles possibles, 0, 1, 2, jusqu'à 9. Une fois la liste de symboles épuisée, on ajoute une
position à gauche pour former le nombre suivant: 10. La valeur du 1 de 10 est cependant 10
fois plus grande que celle du simple 1 en première position. C'est que le poids associé au
symbole diffère selon la position où il est situé.
Bref, la notion de dizaine, centaines, milliers, etc. exprime en fait l'exposant que prend la base
10 donnant le poids de la deuxième, troisième, etc. position du chiffre dans la représentation
du nombre.
En binaire, le nombre de symboles se limite à deux. Une fois les deux symboles épuisés, il
faut déjà ajouter une position à gauche. Ainsi, après 0 et 1, il faut passer à 10 dont le 1 de la
deuxième position vaut cependant deux fois plus que le simple 1 de la première position. Une
fois les possibilités de deux positions épuisées, une troisième position est ajoutée, et celle-ci
vaut deux fois plus que la précédente, et ainsi de suite; puisque la base est 2, le poids associé à
chaque position augmente d'un facteur de deux à chaque fois.

On peut indiquer la base d'un nombre en écrivant l'indice correspondant à droite du nombre :
ex: 7348 signifie que 734 est la représentation d'un nombre exprimé en base 8.
Lorsque la base n'est pas indiquée, cela voudra dire, par convention, que le nombre représenté
est exprimé en base 10, notre système familier à tous. Le tableau suivant montre la
correspondance entre divers systèmes de bases différentes.

Tableau 3 : Valeurs équivalentes exprimées dans les principales bases

2
On a par exemple, 100112 = 1910 = 238 = 1316
On peut aussi décomposer un nombre en mettant en évidence les facteurs qui multiplient les
différentes puissances auxquelles est élevée la base.
Par exemple, 12510 peut se réécrire:

(1 X 102) + (2 X 101) + (5 X 100) =


100 + 20 + 5 = 125
L'évaluation de l'expression, calculée en base 10, donne la valeur (en base 10) du nombre
considéré.
De la même façon, 0.52810 peut se réécrire:

3
(5 X 10-1) + (2 X 10-2) + (8 X 10-3) =
.5 + .02 + .008 = 125
D'une manière plus générale:

Nb (Cn1 bn1)(Cn2 bn2 )...(C1 b1)(C0 b0 )


(C1 b1)(C2 b2 )...(Cm bm )

N est un nombre
C un chiffre ou un symbole composant le nombre
B la base
n le rang du symbole le plus à gauche du point
-m le rang du symbole le plus à droite du point.

2.2. Conversion d'une base à l'autre


2.2.1 Conversion d'un système de base b au système décimal
On peut aussi décomposer ainsi les nombres de n'importe quelle base en somme de facteurs
de la base élevée en puissances. Par exemple, 2378 peut se réécrire:
(2 X 82) + (3 X 81) + (7 X 80) = 2378
Or, comme on sait que:
8 6410
2

81 810
80 110

On peut faire la conversion suivante:


2378 (2 8 ) (3 8 )(7 8 )
2 1 0

(2 64)(3 8) (7 1)


15910
C'est à dire que 2378 = 15910. On rappelle que l'évaluation des calculs effectués en base 10
donne l'expression en base 10 du nombre. Le procédé est le même quelle que soit la base.
Ainsi, pour trouver ce que vaut 11011.12 en base 10 on décompose ainsi:
1011.12 (1 23 )(0 22 )(1 21)(1 20 )(1 21 )
(1 8)(0 4)(1 2)(1 1)(1 0.5)
8 0 2 1 0.5
11.510
C'est-à-dire que 1101.12 = 11.510.

Exemple 1 : Trouver la valeur en base 10 de D3F416 .


D 3F.416 (D 162 )(3 161)(F 160 )(4 161 )
(13 256)(3 16)(15 1)(4 0.625)
3328 48 15 0.25
3391.2510
donc D3F.416 = 3391.2510.

2.2.2 Conversion du système décimal au système de base b


2.2.2.1 Les entiers
Si on divise un nombre décimal, par exemple 125, par 10 (la base) on obtient:
125 /10 12 ; reste 5.

4
On peut également dire que 125 modulo 10 égale 5. Or 5 est le dernier chiffre du nombre 125,
soit ce qui reste lorsqu'on a formé toutes les dizaines possibles. De plus, la partie entière du
résultat, i.e. le nombre de dizaines, peut être obtenue par l'opération 125 DIV 10 .
Si on reprend le résultat de la division, soit 12, et qu'on l'on divise à nouveau par la base, soit
12 DIV 10, on obtient:
12 /10 1 ; reste 2

Qui pourrait aussi se dire 12 modulo 10 = 2. On constate que 2 est le second chiffre du
nombre 125. Maintenant divisons à nouveau 1, soit 1 DIV 10, par 10 (la base).
On obtient:
1 / 10 0 ; reste 1
On s'aperçoit que le reste, 1, est également le premier chiffre de 125, le nombre de départ.
Comme le résultat de cette dernière division est 0, toute autre division par 10 par la suite
donnera comme résultat 0.
Maintenant si on regroupe les restes des divisions, en commençant par le dernier, on obtient 1,
2 et 5, soient les trois chiffres constituant le nombre de départ. Cela s'explique par le fait que
chaque chiffre composant le nombre a comme poids un multiple de 10, la base.
Puisque:
125 (1 10 )(2 10 )(5 10 ),
2 1 0

il est normal que les divisions successives par 10 nous donnent 5, 2 et 1 comme restes
On peut récapituler les opérations à l'aide d'un tableau:

Supposons maintenant que nous voulions connaître l'expression en base 8 de 15910 . On sait
que ce nombre devra se décomposer tel que:
15910 ... (C2 8 )(C1 8 )(C0 8 )
2 1 0

Comme on sait que le nombre de symboles en base 8 est limité à 8, on peut être certain que C0
sera inférieur à 8, c'est-à-dire un nombre parmi l'ensemble {0, 1, 2, 3, 4, 5, 6, 7}. C'est donc
dire que C0 est le reste de la division du nombre de départ par 8, la base désirée:
159 / 8 19 reste 7
donc C0 = 7

Par la méthode de divisions successives, on obtient:

5
En regroupant les restes, à partir du dernier, on obtient 2378 soit la valeur de 15910 en base 8.

Exemple 2 : Trouver la valeur en base 16 de 339110 :

Si l‟on regroupe dans l'ordre inverse les restes obtenus en sachant que dans la base 16, 13
s'écrit D et 15 est représenté par le symbole F, on obtient 339110 = D3F16 .
On peut ainsi trouver l'équivalent d'un entier de base 10 dans n'importe laquelle base. Il suffit
de faire des divisions par b les parties entières obtenues de façon récursive jusqu'à ce qu'on
obtienne toujours zéro comme résultat, et de rassembler ensuite les restes des divisions (ou les
modulos b obtenus de façon récursive) trouvés dans l'ordre inverse.
Notons que l'on a toujours
N10 (N10 DIV b)b N10 MOD b ,
expression utile servant à trouver la représentation en base b du nombre N10 par applications
successives.

2.2.2.2 Les fractions


Quelle que soit la base utilisée, la quantité représentée est la même; ce ne sont que les
symboles avec laquelle cette quantité est représentée qui changent. Comme une fraction est un
nombre inférieur à 1 et que le symbole 1 a la même signification dans toutes les bases, la
partie fractionnaire d'un nombre dans une base donnée demeure fractionnaire dans toute autre
base.

On sait aussi que la partie fractionnaire d'un nombre exprimée en base b peut se réécrire:
C1 b1 C2 b2 ... Cm bm
Par exemple, 0.356018 peut s'écrire sous la forme
(3 X 8-1) + (5 X 8-2) + (6 X 8-3) + (0 X 8-4) + (1 X 8-5)
et de même: 0.125010 se réécrit
(1 X 10-1) + (2 X 10-2) + (5 X 10-3) .
Le problème qui se pose maintenant est de trouver la valeur des coefficients :
C-1, C-2, C-3, ... , C-m,
quelle que soit la base choisie b. On remarque que si on multiplie la dernière expression par
10 (la base), on obtient:
(1 X 100) + (2 X 10-1) + (5 X 10-2) = 1.2510.
Si on multiplie de nouveau par 10 la nouvelle partie fractionnaire obtenue, soit la fraction
0.2510, on obtient: (2 X 100) + (5 X 10-1) = 2.510.
En multipliant de nouveau par 10, la partie fractionnaire de l'expression précédente, soit 0.510,
on obtient: (5 X 100) = 510.

En regroupant dans l'ordre les parties entières obtenues à chacune des multiplications
précédentes (i.e. 1, 2 et 5), on retrouve les coefficients C-1, C-2 et C-3.
On peut ici encore présenter les résultats obtenus, comme on l'a fait pour les coefficients
d'indices positifs pour les entiers, dans un tableau:

6
Figure 2.2: Transformation de fraction décimale en base b

On retrouve, bien sûr, la fraction de départ 0.12510. Pour trouver la valeur dans une base b
quelconque d'un nombre fractionnaire exprimé au départ en base 10, on procède de la même
manière, c'est à dire par multiplications successives de la partie fractionnaire des résultats à
chaque étape par b.

Ainsi, pour trouver la valeur en base 8 de 0.35937510, on fait une série de multiplications par
8. Les résultats de ces multiplications successives des parties fractionnaires sont résumés dans
le tableau suivant:

7
Figure 2.3: Transformation de fraction décimale en base b

Regroupant les entiers obtenus dans la deuxième ligne du tableau, on trouve alors l'égalité
0.35937510 = 0.278.

Voyons d'autres exemples.


Exemple 3 :. Trouver la valeur binaire de 0.312510:

donc 0.312510= 001012

Exemple 4 : Trouver la valeur 0.726562510 en hexadécimal:

8
C'est-à-dire 0.726562510 = 0.BA16

Exemple 5 :. Trouver la valeur octale de 0.110:

On obtient 0.110 = 0.0[6314][6314][6314][68. On se rend compte que le nombre fractionnaire


0.110, représenté dans la base 10 par une suite finie de décimales non nulles, est représenté par
une suite infinie de décimales non nulles dans la représentation en octal (les chiffres 6314 sont
répétés indéfiniment).
Pour trouver la valeur en base b d'un nombre qui comprend à la fois une partie entière et une
partie fractionnaire, on utilise les deux méthodes exposées plus haut: d'abord on trouve la
valeur de la partie entière en faisant une suite de divisions par la base et en regroupant dans

9
l'ordre inverse les restes obtenus. Ensuite on convertit la partie fractionnaire en effectuant une
suite de multiplications par la base, les parties entières des résultats intermédiaires obtenus
successivement nous fournissant les chiffres de la représentation désirée.

2.2.3 Conversion du binaire vers l'octal


Puisque 8 = 23, la base 8 est un multiple de la base 2. Cette constatation simplifie grandement
la conversion d'un nombre octal en binaire et vice-versa. En effet, en binaire, 78 s'écrit 1112.
C'est donc dire qu'il ne faut jamais plus de trois positions binaires pour représenter un
symbole octal, tous forcément plus petits que 7. Mais voyons de plus près la relation qui
existe entre un nombre en binaire et son équivalent octal à l'aide d'un exemple.
Soit un nombre binaire quelconque, par exemple 1010102. Ce nombre peut se réécrire ainsi:
1010102 = (1 X 25) + (0 X 24) + (1 X 23) + (0 X 22) + (1 X 21) + (0 X 20)
Comme les exposants des trois premiers membres de l'expression sont supérieurs à 3, on
pourrait réécrire l'expression en mettant (23 = 8) en évidence:

1010102 = 23 X [(1 X 22) + (0 X 21) + (1 X 20)] + 1 X [(0 X 22) + (1 X 21) + (0 X 20)]


Comme tout nombre élevé à la puissance 0 donne 1 , on pourrait aussi écrire:
1010102 = 81 X [(1 X 22) + (0 X 21) + (1 X 20)] + 80 X [(0 X 22) + (1 X 21) + (0 X 20)]
en évaluant les expressions entre parenthèses:
1010102 = 81 X [4 + 0 + 1] + 80 X [0 + 2 + 0] = (5 X 81) + (2 X 80) = 528
Autrement dit, chaque tranche de trois bits d'un nombre binaire correspond à un symbole
octal.
1010102 = [101]2 [010]2 = 528
Il suffit donc de séparer le nombre binaire en tranches de trois bits et de trouver la valeur
équivalente en décimal de chaque tranche, donnant ainsi le symbole en octal pour chaque
tranche.

Exemple 6 :

La conversion d'un nombre octal en binaire suit le processus inverse, c'est-à-dire qu'il s'agit de
trouver la valeur binaire (sur trois bits) de chaque symbole octal.
On trouve donc 528 = 101 0102
Exemple 7 :

10
On trouve donc 748 = 111 1102

2.2.4 La conversion du binaire à l'hexadécimal


Pour passer du binaire à l'hexadécimal, le principe est le même que pour passer du binaire à
l'octal. Cependant, comme 16 = 24, on sépare cette fois-ci le nombre binaire en tranches de 4
bits et on trouve la valeur hexadécimale correspondant à chaque tranche. Inversement, la
conversion d'un nombre hexadécimal en binaire se fait en juxtaposant les valeurs binaires (sur
4 bits) de chaque symbole hexadécimal.

Exemple 8 : Trouver la valeur binaire de D3F4A16:

11
On trouve donc D3F.4A16 = 110100111111.010010102 .

Exemple 9 : Exprimer 100111001101010012 en hexadécimal.

On trouve alors: 100111001101010012= 139A916.

Notons que la procédure de passage d'une base puissance 2 à une autre base puissance 2, par
exemple de binaire à l'hexadécimal, tient toujours même si les nombres sont fractionnaires.
On considère alors les tranches de 4 bits du point décimal en allant vers la droite pour la partie

12
fractionnaire du nombre considéré et les tranches de 4 bits en allant vers la gauche pour la
partie entière du nombre. Il en est de même pour le passage de la base binaire à la base octale,
excepté que les tranches dans ce cas sont de 3 bits au lieu de 4.
A l'inverse, on obtient le passage d'une base hexadécimale (ou octale) à la base binaire d'un
nombre fractionnaire en exprimant en binaire chacun des caractères du nombre sur 4 bits (ou
sur 3 bits pour la base octale) tout en respectant la position du point décimal. Voyons des
exemples.

Exemple 10 : Exprimer le nombre B3F.A316 en binaire.

On a donc B3F.A316 = 101100111111.101000112.

Exemple 11 : Trouver l'expression de 57.628 en binaire.

13
On a donc 57.=628 = 101111.111012.

Exemple 12 : Trouver la représentation de 34.618 en notation hexadécimale.

14
On a donc 34.618 = 1C.C416 .

2.2.5 Conclusion sur les changements de base


On peut constater qu'il est relativement facile de passer du système octal ou hexadécimal au
système binaire. Cette opération est facile à automatiser. Lors de la compilation d'un
programme, les caractères sont d'abord codés en chaînes de caractères en hexadécimal, selon
un code pré-établi (code ASCII, EBCDIC, ...), et ensuite traduit en chaînes binaires (langage
machine). L'utilisation de systèmes numériques de base multiple de 2 , différent du système
décimal, permet de simplifier la codification et les calculs dans le langage des ordinateurs.
La facilité avec laquelle se font les conversions entre les systèmes binaire et hexadécimal
explique pourquoi le système hexadécimal est devenu une façon abrégée d'exprimer de grands
nombres binaires. Dans un ordinateur, il n'est pas rare de retrouver des nombres binaires ayant
jusqu'à 64 bits de longueur. Ces nombres binaires, comme nous le verrons, ne sont pas
toujours des valeurs numériques, mais peuvent correspondre à un certain code représentant
des renseignements non numériques. Dans un ordinateur, un nombre binaire peut être: 1) un
vrai nombre; 2) un nombre correspondant à un emplacement (adresse) en mémoire; 3) un
code d'instruction; 4) un code correspondant à un caractère alphabétique ou non numérique;
ou 5) un groupe de bits indiquant la situation dans laquelle se trouvent des dispositifs internes
et externes de l'ordinateur.
Quand on doit travailler avec beaucoup de nombres binaires très longs, il est plus commode et
plus rapide d'écrire ces nombres en hexadécimal plutôt qu'en binaire. Toutefois, ne perdez pas
de vue que les circuits et les systèmes numériques fonctionnent exclusivement en binaire et
que c'est par pur souci de commodité pour les opérateurs qu'on emploie la notation
hexadécimale.

15
Tableau 4 : Résumé des méthodes de conversion.

2.3. La représentation des nombres négatifs


Un autre problème de la représentation des données est celui de la représentation des nombres
négatifs. En effet, certaines opérations supposent le traitement d'entiers négatifs. On peut
identifier trois principales façons de représenter les nombres négatifs:
1. représentation en valeur absolue et signe
2. représentation par le complément restreint appelé aussi complément à 1
3. représentation par le complément vrai appelé aussi complément à 2.

2.3.1 La représentation en valeur absolue et signe

16
Il s'agit ici d'utiliser un bit pour représenter le signe de la valeur à représenter. Selon que le
nombre est positif ou négatif, le bit d'extrême gauche prendra par convention la valeur 0 ou la
valeur 1. Par exemple, sur 4 bits, 1 bit sera réservé au signe et trois bits seront utilisés pour
représenter les nombres en valeur absolue:

Figure 2.4: Représentation en signe-magnitude (valeur absolue)

Comme 3 bits sont utilisés pour représenter la valeur absolue, on peut donc représenter 23
valeurs absolues différentes, soient les valeurs comprises entre 0 et 7. Le bit de signe nous
permet d'affecter à chacune de ces valeurs un signe + ou -. Autrement dit, n -1 bits servent à
représenter la valeur absolue, ce qui donne une étendue possible allant de
- (2n-1 - 1) à (2n-1 - 1)
donc de -7 à +7 dans notre exemple.

Inconvénients:
Cette méthode impose que le signe soit traité indépendamment de la valeur. Il faut donc des
circuits différents pour l'addition et la soustraction. On obtient deux représentations
différentes pour 0, soit +0 et -0.
Pour palier ces inconvénients, il faut un mode de représentation qui permette d'utiliser le
même circuit pour effectuer addition et soustraction. Puisqu'on sait que x - y = x + (-y), il faut
que le signe moins soit traité comme partie intégrante de la valeur négative. La forme
complémentée utilisée pour représenter les nombres négatifs permet de réaliser cet objectif.

17
2.3.2 La représentation sous forme complémentée
La représentation sous forme complémentée repose sur le fait que pour n bits de positions, le
nombre de valeurs possibles et distinctes est limité à 2n. Afin de mieux saisir, choisissons
l'exemple d'un compteur en base 10, avec disons, deux bits de position qu'on pourrait
imaginer comme étant deux roues dentées ayant chacune 10 positions numérotées de 0 à 9. La
plus grande valeur qu'on peut représenter avec ce mécanisme est alors 99. Pour faire une
addition, par exemple 50 + 20, on se positionne à 50 et on avance de 20 positions pour
atteindre 70. Jusque-là, tout cela est élémentaire.
Maintenant, si on veut effectuer l'addition d'un nombre négatif, disons 50 + (-20), une manière
de faire est de se positionner au départ à 50 et de reculer de 20 positions pour trouver la
position 30, le bon résultat. Cependant, cette méthode suppose que notre mécanisme de roues
dentées puisse reculer et avancer au besoin, indiqué par un système de commande chargé de
reconnaître le signe de l'opération.
Supposons maintenant que l'on veuille réaliser une machine plus simple à deux roues dentées
qui ne pourrait qu'avancer et qui permettrait d'effectuer les additions autant que les
soustractions! Comme on va le voir, le concept de complément nous permet de le faire. On
sait qu'une fois qu'on a atteint la valeur maximale, dans ce cas-ci 99, le compteur retombe
fatalement à 00. C'est précisément le fait qu'il soit impossible de tenir compte de la retenue
d'extrême gauche (n'ayant pas de troisième roue) qui nous simplifie la tâche: au lieu de reculer
de 20 positions, on avancera de 80 positions. On atteindra ainsi la position 30, représentant le
résultat souhaité ( 50 - 20 = 30)

18
Figure 2.5: Compteur à 99

80 est donc le chiffre qu'il nous faut additionner à 50 pour obtenir 30 avec notre mécanisme
qui ne peut reculer. Si on voulait effectuer l'opération 50 - 37 avec notre mécanisme
Quel serait le nombre qu'il faudrait ajouter à 50 pour que les roues représentent le bon
résultat, soit 13 ? On peut facilement vérifier qu'il s'agit de 63.
On remarque que 80 est le complément qu'il faut ajouter à 20 pour atteindre 100, le nombre
suivant la valeur maximale du compteur ( ici 99). De même que 67 est le complément qu'il
faut ajouter à 37 pour obtenir la valeur maximale plus 1, soit 100. Nous appellerons cette
valeur le complément à 100. On voit que l'utilisation du complément nous permet d'effectuer
une soustraction en se servant du même procédé mécanique que celui utilisé pour une
addition.
Il reste cependant un problème: comment trouver le complément à 100 puisque notre
compteur ne peut pas représenter la valeur 100 sur ses deux roues dentées représentant les
deux positions? Nous contournons le problème en disant que le complément à 100 est le
complément à 99 auquel on ajoute 1.

19
Pour nos exemples, on trouve le complément à 100 de 20 (soit 80) en trouvant le complément
à 99 (soit 79) et en lui ajoutant 1. De même, le complément à 100 de 37 en calculant le
complément à 99 de 37, soit 62, auquel il faut ajouter 1 pour obtenir 67.

2.3.3 Représentation complémentée des nombres binaires


Lorsqu'on a affaire à des représentations en binaire, le principe de représentation des nombres
négatifs sous forme complémentée est le même. Pour n bits de position, le bit à l'extrême
gauche (le bit le plus significatif ou de poids le plus élevé) servira à identifier le signe tandis
que les n - 1 autres bits serviront à représenter la valeur. En fait, si le nombre à représenter est
négatif, on trouve d'abord le complément restreint de la valeur absolue du nombre, c'est-à-dire
ce qui manque à cette valeur pour égaler la valeur maximale possible représentable sur n bits.
On appelle aussi le complément restreint dans le système binaire le complément à 1. Par la
suite, on additionne 1 au complément restreint afin d'obtenir le complément vrai appelé aussi
complément à 2 dans le système binaire.

2.3.3.1 Le complément à 1 des nombres binaires


On pourrait définir le complément à 1 comme ce qu'il faut ajouter à une valeur pour obtenir la
valeur maximale représentable sur le nombre de bits disponibles. C'est le pendant binaire du
complément à 99 de notre exemple avec un compteur décimal.
Par exemple, en binaire sur 4 bits, 1111 est la valeur maximale qu'on puisse représenter. Le
complément à 1 de 0000 est donc 1111, le complément à 1 de 0001 est 1110 et le complément
à 1 de 1010 est 0101 car:

On constate que le complément à 1 d'un nombre binaire se trouve simplement en remplaçant


les 0 par des 1 et les 1 par des 0.
Notons que l'utilisation du complément à 1 pour représenter les nombres négatifs nous donne
encore une double représentation pour le 0. Par exemple sur n bits, +0 est représenté par une
chaîne de n zéros (00...0) et -0 est représenté par une chaîne de n un (11...1).

2.3.3.2 Le complément à 2
Le complément à 2 d'une valeur binaire est ce qu'il faut ajouter à cette valeur pour qu'elle
atteigne une unité de plus que la valeur maximale qu'on peut représenter sur n bits. C'est donc
le (complément à 1) + 1. Cette technique élimine le problème de la double représentation du 0
(+0 et -0) comme c'est le cas dans la représentation "signe et valeur absolue" ou celle du
complément à 1.
La représentation des nombres négatifs sous forme complémentée est largement utilisée. Cela
s'explique parce que le complément à 2 permet d'éliminer la double représentation de 0 tout
en gardant la facilité de reconnaître le signe par le bit d'extrême gauche. Notons que le
complément à 2 du complément à 2 d'un nombre redonne le nombre.

Ainsi, sur 4 bits, avec le signe représenté sur le bit le plus significatif et 3 bits qui permettent
de représenter les valeurs, on peut représenter les entiers de -8 à 7, soit un entier négatif de
plus qu'un complément à 1 ou en signe plus valeur absolue:

20
Tableau 4 : Représentation des nombres binaire négatifs

De façon générale, sur n bits, le complément à 2 des nombres négatifs permet de représenter
les nombres compris entre
2n-1 - 1 et -2n-1 .

21
Exemple 13 : Trouver le complément à 2 de 010100012.

On trouve d'abord le complément à 1 de 01010001 en changeant les 0 en 1 et vice-versa, les 1


en 0, et on lui ajoute 1 ce qui donne:

Exemple 14 : Quelle est la valeur décimale de 101010001 s'il s'agit de la représentation à 2


d'un nombre entier sur 9 bits de position?
Le bit d'extrême gauche de 101010001 indique qu'il s'agit d'un nombre négatif. Par exemple,
si l'ordinateur doit afficher ce nombre à l'écran, il comprendra qu'il faudra générer un signe
moins avant la chaîne de caractères décimaux représentant le nombre obtenu à partir du
complément à 2 de la chaîne binaire 101010001. La valeur est donc:
Valeur cherchée = - (complément à 2 de 101010001)
= - (010101110 + 1)
= - 0101011112
= - 128 + 32 + 8 + 4 + 2 + 1
= - 17510
Exemple 15 : Trouver la représentation complément à 2 sur 10 bits de position de -27610
Le signe est négatif. Il indique donc qu'il s'agit du complément à 2 de la représentation binaire
de 276 sur 10 bits de position. On a:
Représentation cherchée = complément à 2 de 27610
= complément à 2 de 01000101002
= 1011101011 + 1
= 1011101100

Exemple 16 : Effectuer 5 - 3 sur 4 bits (1 bit de signe + 3 bits) en utilisant le complément à 2


pour les nombres négatifs:
-3 = complément à 2 de 0011
= complément à 1 de 0011 + 1
= 1100 + 1
= 1101
donc: 0101 5
+ 1101 + (-3)
_______ ____
0010 2

Exemple 17 : Essayons maintenant avec un nombre plus grand que 5, 5 - 7 par exemple,
toujours en étant sur 4 bits. On a:
Le complément à 2 de -710, est 0111  1000 + 1 = 1001.
On a donc:
22
0101
+1001
______
1 1 1 0  soit -2 en complément à 2.
En effet,
1 1 1 0 = -(complément à 2 de 1 1 1 0)
= - (0 0 0 1 + 1)
= - 0 0 1 02
= - 210.

2.3.3.3 Débordement de capacité en complément à 2.


Un débordement de capacité se produit lorsque l'on effectue une opération dont le résultat
dépasse la valeur maximale représentable sur n bits.
Par exemple, on sait que sur 4 bits, si on utilise le bit le plus significatif pour le signe. Dans la
représentation en complément à 2 pour les nombres négatifs, les valeurs pouvant être
représentées vont de -8 à +7. Que se passe-t-il si on additionne 4 + 5?
retenues:0 1
4 0100
+5 +0101
__ _______
9 1001

Attention, cette chaîne binaire en complément à 2 ne sera pas interprétée en décimal comme
le nombre 9 mais plutôt comme
-(complément à 2 de 1001) = -7
qui n'est évidemment pas le résultat de 4 + 5 !
Le résultat obtenu n'est pas 9. La raison est que 9 ne peut être représenté sur 4 bits en
complément à 2. Mais comment l'ordinateur peut-il vérifier que le nombre négatif obtenu
comme résultat est faux? Cette vérification se fait en comparant les deux retenues d'extrême
gauche: si les deux retenues d'extrême gauche sont différentes (comme dans notre exemple),
cela signifie qu'il y a eu débordement de capacité et que le résultat est faux.
Par contre, si les retenues d'extrême gauche sont identiques, le résultat est alors correct.

Exemple 18 :
retenues:1 1
7 0111
+ (-4) + 1 1 0 0
___ _______
3 1001
Ici, les retenues sont identiques, ce qui nous indique qu'il n'y a pas de débordement de
capacité et que par conséquent, le résultat est exact.

Exemple 19 :
retenues:1 0
(-6) 1 0 1 0
+ (-5) + 1 0 1 1
____ ______
-11 0101
Dans ce cas ci, les retenues sont différentes, ce qu'indique un débordement de capacité; le
résultat est donc faux.

Exemple 20 : (sur 8 bits)


retenues:1 0

23
(-62) 11000010
+ (-89) +10100111
_____ _____________
-151 01101001
Les retenues différentes signalent un débordement de capacité. On peut d'ailleurs vérifier que
–151 dépasse la capacité sur 8 bits qui est, pour les nombres négatifs, de -28-1 , soit -128.

2.3.3.4 Addition et soustraction d'entiers exprimés dans la représentation complément à


2
Considérez des entiers exprimés sur quatre bits.

1er cas addition sans débordement

2ième cas addition avec débordement

3ième cas soustraction sans débordement et résultat positif

24
4ième cas soustraction sans débordement et résultat négatif

5ième cas soustraction sans débordement et résultat négatif

Tableau 5: Résumé sur la représentation des nombres négatifs

25
2.4. La représentation en code BCD (Binary Coded Decimal)

L'action de faire correspondre à des nombres, des lettres ou des mots un groupe spécial de
symboles s'appelle codage et le groupe de symboles un code. Un des codes que vous
connaissez peut-être le mieux est le code Morse dans lequel on utilise une série de points et de
traits pour représenter les lettres de l'alphabet.
Nous avons vu que tout nombre décimal pouvait être converti en son équivalent binaire. Il est
possible de considérer le groupe de 0 et de 1 du nombre binaire comme un code qui représente
le nombre décimal. Quand on fait correspondre à un nombre décimal son équivalent binaire,
on dit que l'on fait un codage binaire pur.
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

26
décimal. Cela implique qu'il faut effectuer fréquemment des conversions entre les systèmes
binaire et décimal. Nous savons que pour les grands nombres, les conversions de ce genre
peuvent être longues et laborieuses. C'est la raison pour laquelle on utilise dans certaines
situations un codage des nombres décimaux qui combine certaines caractéristiques du système
binaire et du système décimal.
Le BCD s'appelle en français Code Décimal codé Binaire (CDB). Si on représente chaque
chiffre d'un nombre décimal par son équivalent binaire, on obtient le code dit décimal codé
binaire (abrégé dans le reste du texte par BCD). Comme le plus élevé des chiffres décimaux
est 9, il faut donc 4 bits pour coder les chiffres.

À partir des codes EBCDIC ou ASCII, en enlevant la partie code dans chaque caractère
décimal et en ne gardant que la partie numérique, on obtient pour chaque chiffre du système
décimal, les représentations suivantes (système appelé BCD):

Code BCD
Chiffre décimal Code BCD
0 0000
1 0001
2 0010
3 0011
4 0100
5 0101
6 0110
7 0111
8 1000
9 1001
Par exemple, 129 se représente dans le système BCD par la chaîne binaire 0001 0010 1001
après avoir remplacé chaque chiffre par son code correspondant, soit le chiffre 1 par 0 0 0 1,
le chiffre 2 par 0 0 1 0, et le chiffre 9 par 1 0 0 1.
Illustrons le code BCD en prenant le nombre décimal 874 et en changeant chaque chiffre pour
son équivalent binaire; cela donne:

8 7 4 décimal
1000 0111 0100 BCD

De nouveau, on voit que chaque chiffre a été converti en son équivalent binaire pur. Notez
qu'on fait toujours correspondre 4 bits à chaque chiffre.
Le code BCD établit donc une correspondance entre chaque chiffre d'un nombre décimal et un
nombre binaire de 4 bits. Évidemment, seuls les groupes binaires 0000 à 1001 sont utilisés. Le
code BCD ne fait pas usage des groupes 1010, 1011, 1100, 1101, 1110 et 1111. 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.

2.4.1 Comparaison entre code BCD et nombre binaire


Il importe de bien réaliser que le code BCD n'est pas un autre système de numération comme
les systèmes octal, décimal ou hexadécimal. En fait, ce code est le système décimal dont on a
converti les chiffres en leur équivalent binaire. En outre, il faut bien comprendre qu'un
nombre BCD n'est pas un nombre binaire pur. 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:
27
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.

2.4.2 Conversion BCD-binaire


Une conversion est nécessaire pour convertir un nombre exprimé en BCD en binaire. La seule
possibilité est de passer par la valeur décimale. Voici la démarche à suivre :
NBCD => l’exprimé en décimal => convertir en binaire
Une telle conversion peut être réalisée dans un système numérique qui fait tous les calculs en
binaire!

2.4.3 Conversion binaire-BCD


La conversion d‟une valeur binaire en BCD demande de passer aussi par la valeur décimale.
Voici la démarche à suivre :
N2 => convertir en décimal => l’exprimer en BCD

2.5. Les opérations arithmétiques en codification BCD

2.5.1 L'addition
Exemple 21 :
Décimal BCD
15 00010101
+ 12 +00010010
___ ______________
27 00100111
Pour ce cas, il y a correspondance entre l'addition décimale et l'addition des représentations
BCD de chaque chiffre en binaire. Mais ce n'est pas toujours le cas. Considérons par exemple
le nouveau cas:

Exemple 22 :
Décimal BCD
15 00010101
+ 18 +00011000
___ ____________
33 00101101  2D
L'addition en binaire ne présente plus une correspondance entre ce qui se passe en décimal et
ce qui se passe en représentation BCD binaire comme dans l'exemple précédent. Ici le retour
direct aux caractères (par l'ajout de la partie code à chacun des groupes de quatre bits) produit
le résultat 2D. Pourquoi? Peut-on remédier à cette situation?
La raison est simple: puisque nous disposons de quatre bits pour la représentation de chacun
des chiffres, nous pouvons représenter tous les chiffres hexadécimaux (de 0 à 9 en plus de A à
F qui ont pour valeur respective allant de 10 à 15). Il y a donc six chiffres de trop par rapport
au système décimal, soit les chiffres hexadécimaux A, B, C, D, E, F ayant pour valeur
respective 10, 11, 12, 13, 14 et 15.

28
Le report aux dizaines est donc retardé de six unités. Pour produire ce report à temps lorsqu'il
y a dépassement à 9 dans une position décimale, il faut donc ajouter la valeur 6.Dans
l'exemple précédent (15 + 18) qui donnait (1 + 1)(5 + 8) = 2D, on obtient en corrigeant:
2(D+6) = 2(13+6) = (2+1)(19-16) = 33, le résultat correspondant en décimal.
Dans le cas général, on doit créer une chaîne binaire de correction formée de 0110 dans les
colonnes où il y a dépassement à 10 et de 0000 lorsqu'il n'y en a pas. Dans l'exemple
précédent, 15 + 18, cette opération se traduit comme suit:

Exemple 22 (suite)
Décimal BCD
15 00010101
+ 18 +00011000
___ ____________
33 0 0 1 0 1 1 0 1  2D
+ 0 0 0 0 0 1 1 0  Chaîne de correction
33 00110011

Exemple 23
Décimal BCD
75 01110101
+ 68 + 01101000
143 1 1 0 1 1 1 0 1  DD
+ 0 1 1 0 0 1 1 0  Chaîne de correction
143 000101000011

Exemple 24 :
Décimal BCD
175 000101110101
+ 328 +001100101000
____ ___________________
503 0 1 0 0 1 0 0 1 1 1 0 1  49D
+ 0 0 0 0 0 1 1 0 0 1 1 0  Chaîne de correction
503 010100000011
504
Dans cet exemple, on remarque qu'il faut tenir compte des retenues à chaque position
décimale pour décider s'il faut corriger avec 6 ou 0, comme c'est le cas pour la deuxième
position (7+2) qui hérite d'une retenue de la première position (5+8 = 3 retenue 1) donnant
comme résultat effectif 7+2+1 = 10 dépassant 9, par conséquent qui génère un facteur de
correction 6 en deuxième position décimale. En fait, on a 175+328 = (1+3)(7+2)(5+8) =
(4)(9)(13) comme résultat, donnant après correction de 6 de la première position (4)(9)(13+6)
= (4)(9+1)(19-16) = (4)(10)(3), lequel génère une autre correction de 6 en deuxième position
dû au dépassement à 10 et qui donne comme résultat final (4)(10+6)(3) = (4+1)(16- 16)(3) =
503.

Exemple 25 :
Décimal BCD
175 000101110101
+ 828 +100000101000
1003 1 0 0 1 1 0 0 1 1 1 0 1  99D
+ 0 1 1 0 0 1 1 0 0 1 1 0  Chaîne de correction
1003 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 1
1004

29
La chaîne de correction 0 1 1 0 0 1 1 0 0 1 1 0 ou 666 en hexadécimal est justifiée par le
dépassement à 9 dans chacune des positions décimales en tenant compte des retenues
générées.

2.5.2 La soustraction

Elle s'effectue en additionnant le complément à 10 du nombre à soustraire sans tenir compte


de la retenue à l'extrême gauche (dernière retenue).

Exemple 26 :
Décimal
47
- 13
____
34 est remplacé par l'addition à 47 de 87 qui est le complément à 10 de 13, on a:
Décimal BCD
47 01000111
+ 87 +01100111
____
134 1 1 0 0 1 1 1 0  CE
+ 0 1 1 0 0 1 1 0  Chaîne de correction
134 000100110100
î î retenue ignorée
qui donne le résultat escompté 34 en ignorant la dernière retenue.

Exemple 27 :
Décimal
847
- 613
____
234
puisque 387 est le complément à 10 de 613,
Décimal BCD
847 100001000111
+ 387 +001110000111
___________________
1 0 1 1 1 1 0 0 1 1 1 0  DCE
+ 0 1 1 0 0 1 1 0 0 1 1 0  Chaîne de correction
_____ ________________________
1234 0 0 0 1 0 0 1 0 0 0 1 1 0 1 0 0
î î retenue ignorée
qui donne le résultat escompté 234 en ignorant la dernière retenue.

2.5.3 La multiplication
La multiplication par 10 d'un nombre représenté en BCD se réalise par un décalage de quatre
bits de position vers la gauche.
Décimal BCD
47 X 10 Décalage de 4 bits à gauche de 0 1 0 0 0 1 1 1
470 010001110000
La multiplication en général se fera par une suite d'additions et de multiplications par 10
dépendant du chiffre considéré dans le multiplicateur suivie de l'addition des résultats
intermédiaires obtenus à chacune des positions décimales

30
Exemple 28 :
47 X 32 = 47 X (30 + 2) = [(3 X 47) X 10] + (2 X 47)
= [(47 + 47 + 47) X 10] + (47 + 47)
Décimal BCD
47 01000111
+ 47 +01000111
____________
1 0 0 0 1 1 1 0  8F
+ 0 0 0 0 0 1 1 0  Chaîne de correction
__ _____________
94 10010100
+ 47 +01000111
_____________
1 1 0 1 1 0 1 1  DB
+ 0 1 1 0 0 1 1 0  Chaîne de correction
___ ___________________
141 0 0 0 1 0 1 0 0 0 0 0 1
X 10  Décalage de 4 bits vers la gauche
1410 0 0 0 1 0 1 0 0 0 0 0 1 0 0 0 0  = [(47 +47 +47) X 10]

47 01000111
+ 47 +01000111
____________
1 0 0 0 1 1 1 0  8F
+ 0 0 0 0 0 1 1 0  Chaîne de correction
___ _____________
94 1 0 0 1 0 1 0 0  = (47 + 47)

1410 0 0 0 1 0 1 0 0 0 0 0 1 0 0 0 0
+ 94 + 10010100
_________________________
0 0 0 1 0 1 0 0 1 0 1 0 0 1 0 0  14A4
+ 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0  Chaîne de correction
_________________________
1504 0 0 0 1 0 1 0 1 0 0 0 0 0 1 0 0

2.5.4 La division
La division par 10 d'un nombre représenté en BCD se réalise par un décalage de quatre bits de
position vers la droite. Par exemple, on a:
Décimal BCD
47 / 10 Décalage de 4 bits à droite de 0 1 0 0 0 1 1 1 donnant
4.7 0100.0111
On indique ce décalage par le point décimal.
La division entière par 10 d'un nombre représenté en BCD se réalise en éliminant les 4 bits à
l'extrême (gauche) droite. Par exemple, on a:
Décimal BCD

31
47 DIV 10 Élimination des 4 bits de (gauche) droite de 0 1 0 0 0 1 1 1 donnant
4 0100

La division en général se fera par une suite successive de soustractions au dividende du


diviseur, et lorsque le résultat devient négatif, de restitution du reste et de multiplication par
10 pour générer la décimale qui suit en répétant l'opération.

Exemple 29 :
47 / 36 donnera:
47 - 36 = 11  donnant 1 reste 11
11 – 36 = -25  reste négatif
-25 + 36 = 11  restitution du reste
11 X 10 = 110  décalage vers la gauche et génération de la première décimale après
le point, le résultat étant  1.0 + ..
110 – 36 = 74  donnant 1.1 +..
74 – 36 = 38  donnant 1.2 + ..
38 – 36 = 2  donnant 1.3 + ..
2 – 26 = - 34  reste négatif
-34 + 36 =2  restitution du reste
2 X 10 = 20  décalage vers la gauche et génération de la deuxième décimale après
le point le résultat étant  1.30 + ..
20 – 36 = -16  reste négatif
-16 + 36 = 20  restitution du reste
20 * 10 = 200  décalage vers la gauche et génération de la troisième décimale après
le point le résultat étant  1.300 + ..
200 – 36 = 174  donnant 1.301 + ..
174 – 36 = 138  donnant 1.302 + ..
138 – 36 = 102  donnant 1.303 + ..
102 – 36 = 66  donnant 1.304 + ..
66 – 36 = 30  donnant 1.305 + ..
30 – 36 = -6  reste négatif
-6 + 36 = 30  restitution du reste
30 X 10 = 360  décalage vers la gauche et génération de la quatrième décimale
après le point le résultat étant �1.3050 + ..
 et ainsi de suite.

2.6. Autres types de Codifications


2.6.1 Chiffres décimaux codés en excédent-3
On obtient cette codification en ajoutant 3 (ou 0 0 1 1) au code BCD de chaque caractère
numérique.
Chiffre décimal Code BCD Code excédent-3
0 0000 0011
1 0001 0100
2 0010 0101
3 0011 0110
4 0100 0111
5 0101 1000
6 0110 1001
7 0111 1010
8 1000 1011
9 1001 1100

32
L'avantage majeur de cette représentation est de simplifier les opérations impliquant le
complément à 9 des nombres comme dans la soustraction. En effet, le code excédent-3 du
complément à 9 d'un chiffre est obtenu directement du code excédent-3 du chiffre en
remplaçant les 0 par 1 et les 1 par 0, opération très rapide pour un ordinateur. On a:

Chiffre décimal Code excédent-3 Code excédent-3 du complément à 9


0 0011 1100
1 0100 1011
2 0101 1010
3 0110 1001
4 0111 1000
5 1000 0111
6 1001 0110
7 1010 0101
8 1011 0100
9 1100 0011
Comme exemple, considérons le nombre 356. Sa représentation en excédent-3 sera:
011010001001.
La représentation excédent-3 du complément à 9 de 356 sera obtenue en remplaçant les 0 par
des 1 et les 1 par des 0 dans la chaîne représentant le nombre 356. On obtient:
100101110110
qui s'interprète en décimal comme le nombre 643. On a bel et bien 356 + 643 = 999.

2.6.2 Chiffres décimaux codés 2 dans 5


On obtient cette codification sur 5 bits en partant de 0 0 0 1 1 pour le code de 0 et en
déplaçant les 1 dans le code vers la gauche, un à la fois pour la suite des chiffres décimaux.
On a:
Chiffre décimal Code BCD Code 2 dans 5
0 0000 00011
1 0001 00101
2 0010 00110
3 0011 01001
4 0100 01010
5 0101 01100
6 0110 10001
7 0111 10010
8 1000 10100
9 1001 11000
L'avantage que présente cette codification est de permettre de mieux détecter les erreurs dans
la transmission de nombres, le code de 5 bits de chaque chiffre ne devant avoir que deux bits à
1.

2.6.3 Récapitulatif de différents codes


Nous donnerons un tableau des principaux codes. Il faut toutefois mentionner le code GRAY
ou binaire réfléchi. Ce code présente l'avantage qu'il n'y a qu'un seul bit qui change à la fois. Il
offre dès lors de multiples utilisations.
Les codes Excédent 3 et AIKEN ne sont pratiquement plus utilisés.

Tableau 2-2 : Table des codes

33
2.7. Représentation des caractères alphanumériques
Un ordinateur ne serait pas d'une bien grande utilité s'il était incapable de traiter l'information
non numérique. On veut dire par-là qu'un ordinateur doit reconnaître des codes qui
correspondent à des nombres, des lettres, des signes de ponctuation et des caractères spéciaux.
Les caractères numériques et alphabétiques des données externes, c'est-à-dire les données
provenant d'unités périphériques ou destinées à être transférées vers ces mêmes unités, sont
représentés à l'aide d'une chaîne de bits selon un code pré-établi. Les codes de ce genre sont
dit alphanumériques. Un ensemble de caractères complet doit renfermer les 26 lettres
minuscules, les 26 lettres majuscules, les dix chiffres, les 7 signes de ponctuation et entre 20 à
40 caractères spéciaux comme +, /, #, %. On peut conclure qu'un code alphanumérique
reproduit tous les caractères et les diverses fonctions que l'on retrouve sur un clavier standard
de machine à écrire ou d'ordinateur.

Les ordinateurs n'utilisent pas tous les mêmes jeux de caractères. Les codes les plus utilisés
sont l'ASCII de 7 bits (American Standard Code for Information Interchange) permettant la
codification de 128 caractères (27), l'ASCII étendu à 8 bits augmentant le nombre de
caractères à 256 (28) et l'EBCDIC (Extended Binary Coded Decimal Interchange Code)
également à 8 bits, un code basé sur le code BCDIC de 7 bits. Il existe également le jeu de
caractères scientifiques CDC qui est un code à 6 bits, ainsi que le code Unicode.
Sur l'ensemble des possibilités de codage d'un jeu de caractères, un certain nombre sont
réservées pour les fonctions de contrôle tels le retour de chariot et le saut de ligne. Les autres
34
possibilités représentent les caractères comme les lettres majuscules et minuscules, les
chiffres et les caractères graphiques.

2.7.1 Code ASCII


Le code alphanumérique le plus répandu est le code ASCII (American Standard Code for
Information Interchange); on le retrouve dans la majorité des micro-ordinateurs et des mini-
ordinateurs et dans beaucoup de gros ordinateurs. Le jeu de caractères ASCII (prononcé
"aski") standard est un code sur 7 bits, on peut donc représenter grâce à lui 27 = 128 éléments
codés. C'est amplement suffisant pour reproduire toutes les lettres courantes d'un clavier et les
fonctions de contrôle comme (RETOUR) et (INTERLIGNE).
Sur les 128 possibilités, 33 sont réservées pour des fonctions de “contrôle”, tel le retour de
chariot et le saut de ligne. Malheureusement, peu de ces caractères suivants ont conservé leur
signification originale.
Les 95 caractères restants sont utilisés pour représenter les lettres majuscules et minuscules,
les chiffres et les caractères graphiques. Une valeur numérique destinée à être utilisée à
l'intérieur de l'ordinateur est assignée à chacun de ces caractères. Entre autres, c'est cette
valeur que l'on obtient quand on utilise la fonction Pascal standard ORD. Les avantages de
l'ASCII sont le fait qu'il soit standard, qu'il soit largement répandu et que les lettres, tant
majuscules que minuscules, soient contiguës.
Le tableau 2-3 contient le code ASCII standard. Dans ce dernier, en plus du groupe binaire de
chaque caractère, on a donné l'équivalent hexadécimal.

35
Légende:
Le code ASCII standard n‟inclue pas des caractères comme les lettres avec les accents é, è, à,
etc. Le nombre de bits utilisé à donc été augmenté à 8. Nous disposons ainsi 256 éléments
codés. L‟extension du code ASCII n‟est pas standard. En français nous avons besoin des
lettres avec des accents comme é, è, à, ... En allemand, il y a d‟autres caractères comme ü, ä,
.... Il existe donc autant de variantes du code ASCII étendu sur 8 bits qu‟il y a de pays voir de
régions!
SOH Début d'en-tête US Séparateur de sous-articles
STX Début de texte RS Séparateur d'articles
ETX Fin de texte GS Séparateur de groupes
36
EOT ou EOT Fin de transmission RS Séparateur de fichiers
ENQ Demande
ACK Accusé de réception BEL Sonnerie
DLE Echappement de transmission
SO Hors code
NAK Accusé de réception négatif SI En code
SYN Synchronisation CAN Annulation
ETB Fin de bloc de transmission EM Fin de support
BS Espace arrière SUB Substitution
HT Tabulateur horizontal ESC Echappement
LF Interligne SP Espace
CR Retour de chariot NUL Nul
DC1 Marche lecteur DEL Oblitération
DC2 Embrayage perforateur
DC3 Arrêt lecteur
DC4 Débrayage perforateur NAT Usage national

2.7.2 Code EBCDIC


L'EBCDIC (Extended Binary Coded Decimal Interchange Code) est un autre jeu de
caractères. Il s'agit d'un code à 8 bits basé sur le code à 7 bits BCDIC. Il est utilisé sur les gros
ordinateurs IBM. Un des désavantages de l'EBCDIC est que certains caractères peu
fréquemment utilisés viennent s'intercaler au beau milieu des lettres majuscules et des lettres
minuscules.

Tableau 6 : Jeu de caractères EBCDIC (00 à 95)

37
Tableau 6 (suite) : Jeu de caractères EBCDIC (96 à 191)

38
Tableau 6 (suite) : Jeu de caractères EBCDIC (192 à 255)

2.8. Protection contre les erreurs


Lors de la transmission de données sous forme de chaînes binaires d'un émetteur à un
récepteur, du stockage et des calculs des erreurs peuvent se produire: un ou plusieurs 0
transmis prennent la valeur 1 à la réception ou inversement. Pour détecter certaines erreurs,
plusieurs moyens existent dont, par exemple, les bits de parité, les codes de Hamming, les
codes polynomiaux, etc..

2.8.1 Les bits de parité


Un bit de parité est un bit ajouté à un certain nombre de bits formant un message de telle sorte
que le nombre de 1 dans le groupe, y compris le bit de parité ajouté, soit pair. Par exemple, si
le ? représente un bit de parité qu'il faut ajouter au groupe de bits constituant l'information à
transmettre, ? 1 0 0 1 1 1 0 1, il devra prendre la valeur 1 puisque dans le groupe complété 1 1
0 0 1 1 1 0 1, le nombre de 1 est égal à 6, un nombre pair. C'est le même principe pour les bits
d'imparité, excepté que le nombre de bits du groupe doit être impair.

Exemple 30
Comme autre exemple, supposons que l'on doit émettre le message "BONJOUR" codé en
ASCII, 8 bits.
Ce message devient (voir la table ASCII en valeur décimale) 66 79 78 74 79 85 82 ou en
hexadécimale 42 4F 4E 4A 4F 55 52 ou
B O N J O U R
66 79 78 74 79 85 82
42 4F 4E 4A 4F 55 52
0100 0010 0100 1111 0100 1110 0100 1010 0100 1111 0101 0101 0101 0010

Si on choisit d'ajouter un bit de parité à chacun des caractères, on doit déterminer ou calculer
les bits de parité marqués par un signe ? dans la chaîne suivante:

39
?01000010 ?01001111 ?0100 1110 ?0100 1010 ?0100 1111 ?0101 0101 ?0101 0010
chacun d'eux contrôlant la parité des 8 bits du caractère qui le précède, ce qui donne:
(?=0)01000010  2 X 1
(?=1)1001111  6 X 1
(?=0)01001110  4 X1
(?=1)01001010  4 X 1
(?=1)01001111  6 X1
(?=0)01010101  4 X 1
(?=1)01010010  4 X 1
ou
001000010101001111001001110101001010101001111001010101101010010
qui sera le message final transmis.
Si à la réception, on décode le message reçu :
001000010101001111001001110101001010101001111001010101101010010
en isolant les bits de parité et les caractères
0 0100 0010 1 0100 1111 0 0100 1110 1 0011 0100 1 0100 1111 0 0011 0010 1 0101 0010
0 0100 0010 2 X 1
1 0100 1111  6 X 1
0 0100 1110  4 X 1
1 0011 0100 4 X 1  Erreur non détecté
1 0100 1111  6 X 1
0 0011 0010  3 X 1  Erreur de parité
1 0101 0010  4 X 1
on retire les bits de parité pour décoder le message reçu nous avons
0100 0010 0100 1111 0100 1110 0011 0100 0100 1111 0011 0010 0101 0010
42 4F 4E 34 4F 32 52
66 79 78 52 79 50 82
BON4O1R
La vérification des bits de parité indique qu'il y a erreur de transmission sur le sixième
caractère reçu Notons aussi que s'il y a dans un même groupe de bits, un nombre pair d'erreurs
(quatrième caractère), celles-ci ne pourront être détectées par le bit de parité. De plus si nous
avons une erreur dans le réception d‟un des bits de parité nous ne pourrons plus valider
correctement la transmission des 8 bits associé à ce mauvais bits de parité.

2.8.2 Les codes de Hamming


On peut généraliser le processus de la détection et même de la correction d'erreurs à l'aide
d'un agencement de bits de parité. Les codes de Hamming constituent un moyen. Nous ne
ferons pas ici la théorie générale de ce type de codes, nous nous contenterons de donner
quelques éléments et d'illustrer leur utilisation à travers des exemples.
Voici une recette de construction de code de Hamming.
Soit N, le nombre total de bits à transmettre, M, le nombre de bits constituant le message et K,
le nombre de bits de contrôle du code de Hamming. Ces derniers sont ajoutés, ils ne font pas
partie de l'information proprement dite et forme ce qu'on appelle une redondance. On doit
avoir, dans tous les cas, la relation suivante:
N = M + K ou 1 ≤ N ≤ (2K – 1), 1 ≤ K
où les K bits de parité sont placés dans les positions 20, 21, 22, …, 2K-1 ou encore 1, 2, 4, 8, 16,
32, ...
Pour une valeur de N donnée, on peut déduire la valeur minimale pour K satisfaisant la
condition et finalement obtenir la longueur du message M possible. On a le tableau de valeurs
suivant:

Tableau 7: Codes de Hamming

40
Chacun des bits de parité contrôlera un certain nombre de bits du groupe de N bits. Comment
détermine-t-on ceux-ci? On le fait en décomposant le numéro de la position des bits en
binaire,
le bit en position 1  0001 sera donc contrôlé par le bit de parité en position 20
le bit en position 2  0010 sera donc contrôlé par le bit de parité en position 21
le bit en position 3  0011 sera donc contrôlé par les bits de parité en position 20 et 21
le bit en position 4  0100 sera donc contrôlé par le bit de parité en position 22
le bit en position 5  0101 sera donc contrôlé par les bits de parité en position 20 et 22
le bit en position 6  0110 sera donc contrôlé par les bits de parité en position 21 et 22
le bit en position 7  0111 sera donc contrôlé par les bits de parité en position 20, 21 et 22
le bit en position 8  1000 sera donc contrôlé par le bit de parité en position 23
le bit en position 9  1001 sera donc contrôlé par les bits de parité en position 20 et 23
le bit en position 10  1010 sera donc contrôlé par les bits de parité en position 21et 23
le bit en position 11  1011 sera donc contrôlé par les bits de parité en position 2021 et 23
et ainsi de suite.

Inversement, on déduit que


le bit de parité en position 20 contrôle les bits en position impaire 1, 3, 5, 7, 9, 11, 13, ...
le bit de parité en position 21contrôle les bits en position 2, 3, 6, 7, 10, 11, 14, 15, 18, ...
le bit de parité en position 22contrôle les bits en position 4, 5, 6, 7, 12, 13, 14, 15, 28, ...
le bit de parité en position 23 contrôle les bits en position 8, 9, 10, 11, 12, 13, 14, 15, 16, ...
le bit de parité en position 24 contrôle les bits en position 16, 17, 18, 19, 20, 21, 22, 23, ...
et ainsi de suite.
Ces suites se terminent selon le nombre N du groupe de bits transmis.

Exemple 31 :
Supposons que M = 7, K = 4, donc N = 11. Les 4 bits du code de Hamming seront dans les
positions 1, 2, 4 et 8 respectivement. Ces bits exercent le contrôle suivant:
le bit de parité en position 20 contrôle les bits en position impaire 1, 3, 5, 7, 9, 11 ;
le bit de parité en position 21contrôle les bits en position 2, 3, 6, 7, 10, 11 ;
le bit de parité en position 22 contrôle les bits en position 4, 5, 6, 7 ;
le bit de parité en position 23 contrôle les bits en position 8, 9, 10, 11.

Exemple 32 :
Supposons que l'on veuille transmettre le caractère b (98d ou 62h), codé en ASCII sur 7 bits
1100010. Calculons le code de Hamming associé, c'est-à-dire les 4 bits de parité en position
20, 21, 22, 23 du groupe de 11 bits.

Le bit de parité 1 contrôle toutes les positions impaires, il faut donc qu'il soit à 0, le bit de
parité 2 contrôle les positions 2, 3, 6, 7, 10 et 11, il faut donc qu'il soit à 0, le bit de parité 3

41
contrôle les positions 4, 5, 6 et 7, il faut donc qu'il soit à 1, et le bit de parité 4 contrôle les
positions 8, 9, 10 et 11, il faut donc qu'il soit à 0.
Le groupe de 11 bits 110?001?0?? devient 110(?=0)001(?=1)0(?=0)(?=0), soit 11000011000.

2.8.3 La détection et la correction


Supposons que l'émetteur envoie la chaîne 11000011000, renfermant comme information le
caractère b et le code de Hamming associé. Imaginons que le récepteur reçoit comme chaîne
11000011100, c'est-à-dire avec une erreur au troisième bit. Voyons comment le récepteur
pourra détecter et peut-être corriger cette erreur.
Le récepteur connaît lui aussi les codes de Hamming. Il sait que les bits de parité sont en
position 1, 2, 4 et 8 et quels sont les bits que chacun des bits de parité contrôle. Par exemple,
le bit de parité 1 contrôle toutes les positions impaires, donc le nombre de 1 occupant ces
positions doit être pair et il en est ainsi pour les autres. Par conséquent, il fait la vérification
des différents bits de parité en comptant le nombre de 1 qui doit être dans tous les cas un
nombre pair. Or, d'après le message reçu, on a:
Pour la somme des bits du groupe contrôlés par le bit de parité en position 1, soit les bits 1, 3,
5, 7, 9 et 11 nous avons 1 + 0 + 0 + 1 + 1 + 0 = 3  Erreur de parité
pour la somme des bits du groupe contrôlés par le bit de parité en position 2, soit les bits 2, 3,
6, 7, 10 et 11 nous avons 1 + 1 + 0 + 0 + 1 + 0 = 3 Erreur de parité
pour la somme des bits du groupe contrôlés par le bit de parité en position 4, soit les bits 4, 5,
6 et 7 nous avons 0 + 0 + 1 + 1 = 2 et pour la somme des bits du groupe contrôlés par le bit de
parité en position 2, soit les bits 8, 9, 10 et 11 nous avons 1 + 1 + 0 + 0 = 2
Il y a donc deux erreurs détectées dans les bits de parité, soit les bits de parité en position 1 et
2. Le bit erroné du groupe est donc un bit à la fois contrôlé par ces deux bits de parité. Or il
n'y a que les bits 3 et 11 qui soient communs aux deux listes. Lequel des deux l'est, 3 ou 11?
Si c'était le bit 11, le bit de parité en position 8 serait aussi erroné car il contrôle aussi le bit
11, or ce qui n'est pas le cas. L'erreur est donc localisée au bit de position 3. L'ordinateur
changera le message reçu 11000011100 en 11000011000 et après l'élimination des bits 1, 2, 4
et 8 déduira le code caractère 1100010 et qu'il s'agit du caractère b.
Ce type de code de Hamming ne permet de corriger qu‟une seule erreur de transmission que
ce soit dans le message ou encore dans les bits de parité.

CHAPITRE 3
ALGEBRE DE BOOLE ET CIRCUITS LOGIQUES
L'ordinateur est un dispositif électronique sophistiqué qui traite l'information mise sous forme
d'impulsions électriques traduisant les chaînes binaires utilisées pour représenter nos
symboles codés sous forme de bits. Il ne faut pas oublier que cette machine ne comprend que
les impulsions électriques. Les traitements, pour leur part, sont essentiellement réalisés à
l'aide d'opérations telles l'addition, la soustraction, la multiplication, la division, la
comparaison, etc. Ces opérations sont mies en œuvre par des circuits numériques. Tous les
circuits numériques fonctionnent en mode binaire, c'est-à-dire un mode dans lequel les
signaux peuvent prendre que deux valeurs, soit ‟0‟ ou soit ‟1‟. Les valeurs ‟0‟ et ‟1‟
correspondent à des plages de tensions définies à l'avance. Cette caractéristique des circuits
logiques nous permet de recourir à l'algèbre de Boole pour l'analyse et la conception de
systèmes numériques.
Plus fondamentalement, les opérations sont composées d'opérations logiques qui sont
effectuées par des circuits logiques de base appelés portes. Une porte est en fait un circuit
combinatoire à une ou plusieurs entrées et à au moins une sortie. Les conditions aux entrées
d'une porte déterminent l'état des sorties.

42
Dans ce chapitre, nous étudions les portes logiques, qui constituent les blocs élémentaires des
circuits logiques et nous verrons comment il est possible de décrire leur fonctionnement grâce
à l'algèbre booléenne. Aussi, nous apprendrons comment on réussit à construire des circuits
logiques en combinant les portes et comment l'algèbre de Boole parvient à décrire et à
analyser ces derniers.

3. 1. Définitions
Nous allons commencer par donner quelques définitions utilisés dans les circuits logiques.

3.1.1 Les états logiques


L'algèbre booléenne se distingue principalement de l'algèbre ordinaire par des constantes et
des variables qui ne peuvent prendre que les deux valeurs possibles 0 et 1. Une variable
booléenne est une grandeur qui peut, à des moments différents, avoir la valeur 1 ou 0. Les
variables booléennes servent souvent à représenter un état d‟un système. Nous pouvons dire
qu‟une lampe est soit allumée, soit éteinte. Nous traduirons cela en indiquant que la lampe est
soit à ‟1‟ (pour allumée) ou soit à ‟0‟ (pour éteinte). Nous pouvons faire de même avec un
interrupteur qui est soit ouvert (‟0‟) ou soit fermé (‟1‟). Ainsi, les valeurs booléennes 0 et 1 ne
représentent pas des nombres réels mais plutôt l'état logique d'une variable. Dans le domaine
de la logique numérique, on utilise d'autres expressions qui sont synonymes de 0 et 1.
Certaines de ces expressions sont représentées dans le Tableau 8 ci-dessous.

Tableau 8 : Diverses appellations pour les niveaux logiques

3.1.2 Les variables logiques

Une variable logique est une grandeur qui ne peut prendre que les deux états logiques. Ils
s'excluent mutuellement. Nous les symboliserons par 0 ou 1.

3.1.3 Les fonctions logiques

Une fonction logique est une variable logique dont la valeur dépend d'autres variables. Il
existe des fonctions logique à une, deux ou plusieurs variables. Une fonction logique peut être
donnée par :
 une expression analytique ;
 une table de vérité ;
 un circuit électronique numérique.

L'algèbre de Boole est un outil qui permet d'exprimer les effets qu'ont les divers circuits
numériques sur les variables logiques et de les manipuler en vue de déterminer la meilleure
façon de matérialiser une certaine fonction logique. Parce qu'il n'y a que deux valeurs
43
possibles, l'algèbre booléenne se manipule plus aisément que l'algèbre ordinaire. En algèbre
booléenne, il n'y a pas de fraction, de partie décimale, de nombre négatif, de racine carrée, de
racine cubique, de logarithmes, de nombres imaginaires... En fait, dans cette algèbre, on ne
retrouve que trois opérations élémentaires :

a. La fonction logique OU (or) Nous utiliserons le symbole (#). Cette fonction est très
souvent représentée par le symbole (+)
b. La fonction logique ET (and) Nous utiliserons le symbole (.)
c. La fonction logique d‟inversion NON (not) Nous utiliserons le symbole ( ¯ ou / ).
La plupart des fonctions logiques peuvent être exprimées en utilisant ces fonctions de base.

3.2. L'algèbre de Boole .


On dit que les portes OU, ET et NON sont des opérateurs booléens, parce qu'ils impliquent ou
traitent des variables booléennes, c'est à dire des variables logiques qui ne peuvent prendre
que deux valeurs: 0 et 1. Le terme booléen vient du nom du mathématicien George Boole
(1815-1864), qui fit une analyse mathématique de la logique.
L'ensemble des règles relatives au traitement des variables booléennes est appelé algèbre de
Boole ou treillis booléen. Nous reviendrons plus loin aux règles du treillis booléen. Mais
d'abord, regardons de plus près les trois portes fondamentales: OU, ET et NON.

3.2.1 Tables de vérité

De nombreux circuits logiques possèdent plusieurs entrées mais seulement une sortie. Une
table de vérité nous fait connaître la réaction d'un circuit logique (sa valeur de sortie) aux
diverses combinaisons de niveaux logiques appliqués aux entrées. La figure 4- 3 nous montre
des tables de vérité à deux, trois et quatre colonnes d'entrées.

44
Figure 3.1 : Tables de vérité: a) table à deux entrées; b) table à trois entrées; c) table à quatre entrées.

Dans chacune de ces tables, toutes les combinaisons possibles de 0 et de 1 pour les entrées (D,
C, B, A) apparaissent à gauche, tandis que le niveau logique résultant de la sortie, X, est
donné à droite. Pour le moment, il n'y a que des "?" dans ces colonnes, car les valeurs de
sortie sont différentes pour chaque type de circuit.
Notons que dans la table de vérité à deux entrées il y a quatre lignes, que dans celle à trois
entrées il y a huit lignes et que dans la table à quatre entrées, il y en a seize. Pour une table de
N entrées, il y a 2N lignes. De plus, vous remarquez sans doute que la succession des
combinaisons correspond à la suite du comptage binaire, de sorte que la détermination de
toutes les combinaisons est directe et qu'on ne peut pas en oublier.

3.2.2 L'opération OU (OR)


Soit deux variables logiques indépendantes, A et B. Quand on combine A et B au moyen de la
fonction logique OU, le résultat X est exprimé l‟expression suivante :
X = A # B, ou X = A + B, ou X = A U B.
Dans cette équation, le signe # indique un OU logique. La fonction de sortie est active si A
OU B est actif. Le fonctionnement de cet opérateur est défini par la table de vérité de la figure
4- 4.

45
Figure 3.2 : a) Table de vérité définissant l'opération OU;
b) symbole de circuit servant à représenter une porte OU à deux entrées.

Dans de nombreuses littératures, l‟opérateur OU et représenté par le symbole de l‟addition.


X = A + B. Nous n‟utiliserons pas cette symbolique afin de ne pas confondre l‟opérateur
logique OU avec l‟opérateur arithmétique d‟addition (+). Dans la suite de ce manuel nous
utiliserons indifféremment les symbole #, + ou or pour l‟opérateur logique OU.

La porte OU à deux entrées est un circuit dont la sortie est active si l‟une ou l‟autre des
entrées est actives. La figure 3.2 nous fait voir le symbole utilisé pour représenter une porte
OU à deux entrées.
De manière générale, la fonction de sortie d‟une porte OU à n entrées est active (niveau 1) si
une entrée au moins est active (niveau 1). La fonction de sortie est inactive (niveau 0) si
toutes les entrées sont inactives (niveau 0).
L'addition logique peut s'étendre aux chaînes binaires où les bits de même rang sont
additionnés selon la table de vérité de l'addition simple:

Figure 3.3: Porte Ou, Table binaire

Bien sûr, la boîte noire qui porte le nom OU dans le schéma ne décrit pas le circuit
électronique approprié pour réaliser la fonction OU. Voici un circuit électrique simple qui
pourrait réaliser la fonction OU:

46
Figure 3.4: Porte OU, Schéma

Un signal électrique à l'entrée actionne un aimant provoquant la fermeture de la porte et


permettant le passage du courant. Disons tout de suite qu'un tel circuit est tout à fait démodé.
Sa grande simplicité nous permet cependant de bien comprendre ce que fait le circuit. Nous
aborderons plus loin les technologies de maintenant.

3.2.3 L'opération ET (AND)


Soit deux variables logiques indépendantes, A et B. Quand on combine A et B au moyen de la
fonction logique ET, le résultat X s'exprime symboliquement par l‟expression suivante :
X = A · B, ou X = A  B
Dans cette expression, le signe · signifie l'opération booléenne ET, dont les règles d'opération
sont données dans la table de vérité de la figure 3.5.

Figure 3.5 : a) Table de vérité définissant l'opération ET;


b) symbole d'une porte ET à deux entrées.

D'après cette table, nous pouvons facilement déduire que la fonction logique ET correspond à
la multiplication en binaire. Quand A ou B est 0, le produit est nul; quand A et B sont 1, leur
produit est 1. Il nous est donc possible d'affirmer que dans l'opération ET la réponse est 1 si et
seulement si toutes les entrées sont à 1, et qu'elle est 0 dans tous les autres cas.

La figure 3.5 nous fait voir une porte ET à deux entrées. La sortie de cette porte est égale au
ET logique des deux entrées, c'est-à-dire X = A·B. Exprimée autrement, la porte ET est un
47
circuit logique qui active sa sortie (niveau 1) seulement quand lorsque toutes ses entrées sont
actives (niveau 1). Dans tous les autres cas, la sortie de la porte ET est inactive (niveau 0) De
manière générale, la fonction de sortie d‟une porte ET à n entrées est active (niveau 1)
uniquement lorsque toutes les entrées sont actives (niveau 1). La sortie d‟une porte ET est
inactive (niveau 0) si une seule des entrées est inactive (niveau 0).

L'opération de multiplication peut comme les précédentes s'étendre aux chaînes binaires.

Figure 3.6: Porte Et, Table binaire

On pourrait décrire simplement le fonctionnement de la porte ET avec ce circuit primitif:

Figure 3.7: Porte ET, Schéma

3.2.4 L'opération NON (NOT)


L'opération NON, contrairement aux opérations ET et OU, ne concerne qu'une variable
d'entrée. Par exemple, si la variable A est soumise à une opération NON, le résultat X est
donné par l'expression:

où le trait de surlignement représente l'opération NON. L'opération NON porte également le


nom d'inversion ou de complémentation. On trouve d‟autres signes pour indiquer une
inversion: il s'agit de point d‟exclamation (! et de / ). Donc :

On peut voir à la Figure 3.8 le symbole d'un circuit NON, appelé plus couramment inverseur.
Un tel circuit n'a toujours qu'une entrée, et sa sortie prend le niveau logique opposé du niveau
logique de l'entrée.

48
Figure 3.8: a) La table de vérité et b) le symbole du circuit NON.

Par convention on note a ou a‟ l‟inverse de a. L'exemple suivant montre l'opération


d'inversion inversion étendue à une chaîne binaire:

Figure 3.9 : Porte NON, Table binaire

Le fonctionnement de la porte NON pourrait s'illustrer par le circuit primitif suivant:

Figure 3.9 : Porte NON, Schéma


Remarque: La porte OU et la porte ET peuvent être inversées pour former les portes NON-
OU (NOR) et NON-ET (NAND). L'inversion est représentée graphiquement par un petit
cercle à la sortie.

3.2.5 Les portes NON-OU (NOR) et NON-ET (NAND)


En technique numérique, on retrouve très souvent deux autres types de portes logiques: la
porte NON-OU (NOR) et la porte NON-ET (NAND). En réalité, ces portes correspondent à

49
des combinaisons d'opérations élémentaires ET, OU et NON, et il est relativement facile de
les décrire au moyen des fonctions de l'algèbre booléenne que vous connaissez déjà.

3.2.5.1 La porte NON-OU (NOR)


On peut voir à la Figure 3.10 le symbole d'une porte NON-OU à deux entrées. Nous
constatons que c'est le symbole d'une porte OU sauf qu'il y a un petit rond à la pointe. Ce petit
rond correspond à une opération d'inversion. Ainsi, la porte NON-OU a un fonctionnement
analogue à une porte OU suivie d'un INVERSEUR. L'expression de sortie d'une porte
NONOU
est .
La table de vérité montrée à la figure 4- 7 nous apprenons que la sortie d'une porte NON-OU
est exactement l'inverse de celle d'une porte OU pour toutes les combinaisons des entrées.

Figure 3.10: a) La table de vérité et b) le symbole du circuit NON-OU (NOR).

De manière générale, la fonction de sortie d‟une porte NON-OU à n entrées est active (niveau
1) uniquement lorsque toutes les entrées sont inactives (niveau 0). La sortie d‟une porte
NON-OU est inactive (niveau 0) si une seule des entrées est active (niveau 1).
Par DeMorgan nous pouvons montrer que la porte NOR est équivalent à :

3.2.5.2 La porte NON-ET (NAND)


On peut voir à la Figure 3.11le symbole d'une porte NON-ET à deux entrées. Nous voyons
que c'est le symbole d'une porte ET sauf qu'il y a un petit rond à la pointe. Encore une fois, ce
petit rond correspond à une opération d'inversion. Ainsi, la porte NON-ET a un
fonctionnement analogue à une porte ET suivie d'un INVERSEUR. L'expression de sortie
d'une porte NON-ET est .
La table de vérité montrée à la Figure 3.11 nous apprenons que la sortie d'une porte NON-ET
est exactement l'inverse de celle d'une porte ET pour toutes les combinaisons des entrées.

50
Figure 3.11: a) La table de vérité et b) le symbole du circuit NON-ET (NAND).

De manière générale, la fonction de sortie d‟une porte NON-ET à n entrées est active (niveau
1) si une seule des entrées est inactive (niveau 0). La sortie d‟une porte NON-ET est inactive
(niveau 0) uniquement lorsque toutes les entrées sont actives (niveau 1).
Par DeMorgan nous pouvons montrer que la porte NAND est équivalent à :

3.2.5.3 La porte OU-exclusif (XOR)

Deux circuits logiques spéciaux qui interviennent souvent dans les systèmes numériques: le
circuit OU exclusif et le circuit NON-OU exclusif. La sortie d'une porte OU exclusif est au
niveau haut seulement lorsque les deux entrées sont à des niveaux logiques différents. Une
porte OU exclusif n'a toujours que deux entrées. On veut dire par là qu'il n'existe pas de portes
OU exclusif à trois ou quatre entrées. Ces deux entrées sont combinées pour que
. On abrège cette expression ainsi:

On peut voir sur la Figure 3.12 la table de vérité ainsi que le symbole d'une porte OU exclusif.

51
Figure 3.12: a) Table de vérité définissant l'opération OU exclusif;
b) symbole d'une porte OU exclusif.

De manière générale, la fonction de sortie d‟une porte OU-exclusive indique la différence


entre les deux signaux d‟entrées. La sortie est active (niveau 1) si l‟état logique des entrées est
différent.

Figure 3.13: Porte XOU, Schéma

3.2.6 Symbolique des opérations de bases


Pour représenter les opérations de bases, nous recourons à un schéma dans lequel les
opérateurs logiques seront remplacés par des symboles. Nous allons utiliser, dans le cadre de
ce cours, des symboles CEI (norme européenne) sauf pour les opérateurs de bases où nous
utiliserons les symboles MIL (norme américaine) qui sont plus lisible. Par contre nous
utiliserons la symbolique CEI pour indiquer l‟inversion.

Figure 3.14: Symbolique des fonctions de base (NOT)

52
Le grand triangle marque l'amplification, le petit triangle l'inversion. On peut remarquer que
l'inversion peut précéder ou suivre l'amplification. Pour les symboles 1.e et 1.f, le rond
marque l'inversion. Nous utiliserons de préférence les symboles 1.c ou 1.d. Pour les symboles
CEI, l'amplification se marque par un rectangle.

Figure 3.14 (suite): Symbolique des fonctions de base (ET, OU)

53
Figure 3.14 (suite): Symbolique des fonctions de base (ET NON, OU NON)

Figure 3.14 (suite): Symbolique des fonctions de base (OU EXCLUSIF)

3.3 RÉALISATION DE CIRCUITS À PARTIR


D'EXPRESSIONS BOOLÉENNES

Si l'opération d'un circuit est définie par une expression booléenne, il est possible de tracer
directement un diagramme logique à partir de cette expression. Par exemple, si on a besoin
d'un circuit tel que X = ABC, on sait immédiatement qu'il nous faut une porte ET à trois
entrées. Le raisonnement qui nous a servi pour ces cas simples peut être étendu à des circuits
plus complexes.

54
Supposons que l'on veuille construire un circuit dont la sortie est
. Cette expression booléenne est constituée de trois termes (
) qui sont additionnés logiquement. On déduit qu'il nous faut une porte OU
à trois entrées auxquelles sont appliqués respectivement les signaux , .
Chaque entrée de la porte OU est un produit logique, ce qui signifie qu'il a fallu trois portes
ET alimentées par les entrées appropriées pour produire ces termes. C'est ce qu'on peut voir à
la figure 3.15 où est tracé le schéma final du circuit.

Figure 3.15: Construction d'un circuit logique à partir d'une expression booléenne.

Voici la description en VHDL synthétisable du circuit ci-dessus :


Y <= (A and C) or (B and not C) or (not A and B and C) .

3.3.1 Description de circuits logiques en VHDL


La description d‟équations logiques en VHDL nécessite l‟utilisation des parenthèses. Les
opérateurs logiques VHDL, soit and, or, nand, nor, xor et xnor, ont tous la même priorité. Seul
l‟opérateur not est prioritaire sur les autres opérateurs logiques et ne nécessite pas de
parenthèses. Nous allons donner une série d‟exemples de descriptions VHDL synthétisables :

a) soit , en VHDL : Y <= (A and C) or (B and C) ;


b) soit , en VHDL : Y <= (A and C) xor (not B and C) ;

b) soit , en VHDL : Y <= not (A xnor C) .

3.4. Algèbre de BOOLE

Puisque des circuits équivalents peuvent être construits avec un nombre plus ou moins grand
de portes, on tentera de trouver la fonction optimale. Pour ce faire, il faut simplifier la
fonction en y appliquant les règles de l'algèbre de Boole. Ces règles du treillis booléen sont
exprimés dans la figure 3.16.

55
Figure 3.16: Règles du treillis booléen

Les égalités suivantes sont aussi utiles:

Ainsi l'algèbre de Boole peut servir à analyser un circuit logique et à exprimer ce dernier sous
forme mathématique. Nous pouvons diviser les règles en plusieurs groupes.

3.4.1 Les postulats


Nous avons deux postulats :

Ces deux postulats (7 et 8) traduisent le fait que l'inverse d'une variable ne peut jamais
prendre la même valeur que la variable. Le manquement à ces postulats est possible lors de
régimes transitoires dans les circuits. Ce manquement peut entraîner un comportement
aléatoire sur les fonctions dépendantes de ces variables.

3.4.2 Les théorèmes pour une variable


Les théorèmes de Boole sont des règles que l‟on utilise pour simplifier les expressions
logiques et, par le fait même, les circuits logiques. La figure 3.17 présente le premier groupe
de théorèmes dans lesquels X est une variable logique prenant soit la valeur 0, soit la valeur 1.

56
Figure 3.17 : Théorèmes de Boole pour une variable.

Notons que dans les théorèmes (1) à (8), la variable X peut correspondre à une expression
renfermant plus d'une variable. Par exemple, si nous avons , nous pouvons
affirmer, en posant X = AB et d'après le théorème (4), que l‟équation = 0.

3.4.3 Théorèmes pour plusieurs variables


Les théorèmes suivants portent sur plus d'une variable:

Figure 3.18 : Théorèmes de Boole pour plusieurs variables

Les théorèmes (9) et (10) montrent que ET et OU sont des lois de composition commutatives,
donc que l'ordre de la multiplication ou de l'addition logique de deux variables n'a pas
d'importance, que le résultat reste le même.
Les théorèmes (11) et (12) montrent que ET et OU sont des lois de composition associatives,
qui indiquent que l'on peut grouper, comme l'on veut, les variables dans une expression de
multiplication ou d'addition logique.
Les théorèmes (13) et (14) fait voir que la multiplication logique est distributive par rapport à
l'addition logique, c'est-à-dire que l'on peut développer une expression en la multipliant terme
à terme, tout comme dans l'algèbre ordinaire. Ce théorème démontre également que l'on peut
mettre en facteur une expression. On veut dire par là que si nous avons une somme de termes,
chacun renfermant une variable commune, il est possible de mettre cette variable en facteur,
comme on le fait en algèbre ordinaire.
Il est facile de se rappeler des théorèmes (9) à (14) puisqu'ils sont identiques à ceux de
l'algèbre ordinaire. Par contre, les théorèmes (15) et (16) ne se retrouvent pas en algèbre
ordinaire. On peu les démontrer en passant en revue toutes les possibilités de X et de Y.
Tous ces théorèmes sont d'une grande utilité pour simplifier une expression logique, c'est-à-
dire pour obtenir une expression comptant moins de termes. L'expression simplifiée permet de
réaliser un circuit moins complexe que celui correspondant à l'expression originale.

57
3.4.4. Les théorèmes de DE MORGAN
Deux des plus importants théorèmes de l'algèbre booléenne nous ont été légués par le
mathématicien De Morgan. Les théorèmes de De Morgan se révèlent d'une grande utilité pour
simplifier des expressions comprenant des sommes ou des produits de variables
complémentés. Voici ces deux théorèmes:
(17)
(18)
Le théorème (17) affirme que la somme logique complémentée de deux variables est égale au
produit logique des compléments de ces deux variables. De même, le théorème (18) stipule
que le produit logique complémenté de deux variables est égal à la somme logique des
compléments de ces deux variables. La démonstration de ces deux théorèmes se fait
simplement en considérant toutes les possibilités de X et de Y.
Bien que ces théorèmes aient été formulés pour les variables simples X et Y, ils demeurent
aussi vrais pour les cas où X et Y sont des expressions comprenant plusieurs variables. A titre
d'illustration, appliquons ces théorèmes à l'expression suivante :

Le résultat trouvé peut être simplifié une autre fois, car on y retrouve encore un produit
logique complémenté. En vertu du théorème (18), il vient:

Comme , le résultat définitif est alors:

3.4.5 Les théorèmes du consensus


Les théorèmes définis précédemment pour plusieurs variables associés avec le théorème de
De Morgan permettent de déterminer les théorèmes du consensus. Nous donnons ici ces
théorèmes sans démonstration. Vous pouvez démontrer ces théorèmes à titre d‟exercices.
(19)
(20)

3.5. Circuits logiques combinatoires

dans la section précédente, nous nous sommes penchés sur l'étude de l'ensemble des portes
logiques élémentaires et avons réussi, au moyen de l'algèbre booléenne, à décrire et à analyser
des circuits matérialisés par des combinaisons de portes logiques. On peut qualifier ces
circuits logiques de combinatoires du fait qu'à tout moment le niveau logique recueilli en
sortie ne dépend que de la combinaison des niveaux logiques appliqués aux entrées. Un circuit
combinatoire ne possède aucun mécanisme de rétention (mémoire); par conséquent sa sortie
réagit seulement aux signaux présents sur ses entrées.
Dans ce chapitre, nous poursuivons notre étude des circuits combinatoires. D'abord nous
poussons plus avant la simplification (minimisation) des circuits. Pour cela, nous utiliserons
deux méthodes: les théorèmes de l'algèbre booléenne et une technique graphique, les tables de
Karnaugh.

3.5.1 Les Sommes de produits


Les méthodes de simplification et de conception des circuits logiques que nous étudierons
exigent que l'on exprime les équations logiques sous la forme d'une somme de produits, dont
voici quelques exemples:

58



Chacune de ces trois expressions d'une somme de produits est formée d'au moins deux termes
d'un produit logique (terme ET) mis en relation avec l‟opérateur OU. Chaque terme ET
comprend une ou plusieurs variables exprimées sous sa forme normale ou sa forme
complémentée. Par exemple, dans la somme de produits , le premier
produit logique est constitué des variables A, B et C non complémentées, tandis que le second
produit comprend la variable B non complémentées et les variables A et C complémentées.
Notez que dans une somme de produits, le signe de complémentation ne peut pas surmonter
plus d'une variable d'un terme (par ex. on ne peut pas avoir ).

3.5.2 Simplification des circuits logiques


Dès que l'on dispose de l'expression d'un circuit logique, il peut être possible de la minimiser
pour obtenir une équation comptant moins de termes ou moins de variables par terme. Cette
nouvelle équation peut alors servir de modèle pour construire un circuit entièrement
équivalent au circuit original mais qui requiert moins de portes.
A titre d'illustration, considérons le circuit de la figure 5- 1a) que l'on a minimisé pour obtenir
le circuit de la figure 5- 1b). Étant donné que ces deux circuits produisent les mêmes décisions
logiques, il va sans dire que le circuit le plus simple est préférable puisqu'il compte moins de
portes; il est aussi moins encombrant et moins coûteux à produire.

Figure 3.19 : Simplification d'un circuit logique.


Dans les sections suivantes, nous verrons deux façons différentes de simplifier des circuits
logiques. Une première façon est fondée sur l'application des théorèmes de l'algèbre
booléenne; cette façon, comme nous le verrons, dépend énormément de l'instinct et de
l'expérience. L'autre façon (les tables de Karnaugh), au contraire, suit une démarche
systématique, semblable à une recette de cuisine.

3.5.3 Simplification algébrique


Les théorèmes de l'algèbre booléenne étudiés au chapitre précédent peuvent nous être d'un
grand secours pour simplifier l'expression d'un circuit logique. Malheureusement, il n'est pas
toujours facile de savoir quels théorèmes il faut invoquer pour obtenir le résultat minimal.
D'ailleurs, rien ne nous dit que l'expression simplifiée est la forme minimale et qu'il n'y a pas
d'autres simplifications possibles. Pour toutes ces raisons, la simplification algébrique est
souvent un processus d'approximations successives. Il existe cependant deux étapes
essentielles :

59
a. Applications successives des théorèmes de De Morgan en vue d'obtenir une somme
de produit ;
b. Trouver des variables communes pour la mise en facteur de ces dernières.

Exemple 33 : Simplification algébrique

3.5.4 Conception de circuits logiques combinatoires

Fréquemment, le cahier des charges d‟un circuit logique à concevoir est donné sous forme
textuel. Cette forme n‟est pas utilisable pour déterminer l‟équation du circuit. La table de
vérité permet de spécifier le fonctionnement du circuit. Cette première phase correspond à la
conception du circuit. Les étapes suivantes nous permettrons de déterminer le schéma logique.
Il s‟agit alors des étapes de réalisation. La première étape de conception sera vue lors des
exercices. Nous allons donné ici toutes les étapes de réalisations permettant de passer de la
table de vérité au schéma logique du circuit.
La table de vérité spécifie pour chaque combinaison des entrées le niveau logique de la sortie.
Nous pouvons ensuite déterminer l'expression booléenne du circuit à partir de cette table de
vérité. Voici la procédure générale qui aboutit à l'expression de la sortie à partir d'une table de
vérité :
a. Pour chaque cas de la table qui donne 1 en sortie, on écrit le produit logique (terme
ET) qui lui correspond ;
b. On doit retrouver toutes les variables d'entrée dans chaque terme ET soit sous forme
directe soit sous forme complémentée. Dans un cas particulier, si variable est 0, alors
son symbole est complémenté dans le terme ET correspondant ;
c. On somme logiquement (opérateur OU) ensuite tous les produits logiques constitués,
ce qui donne l'expression définitive de la sortie.
La table de vérité nous permet d‟établir l'expression de la sortie sous la forme d'une somme de
produits. Dès lors il est possible de construire le circuit au moyen de portes ET, OU et NON.
Il faut une porte ET pour chaque produit logique et une porte OU dont les entrées sont les
sorties des portes ET. Généralement, il est possible de simplifier l‟expression obtenue.
L‟objectif
est de réaliser le circuit le plus simple possible. Il sera moins cher et souvent plus rapide!

Exemple 34:

60
On voit qu'il y a trois combinaisons qui produisent une valeur 1 pour la sortie X. Les termes
ET pour chacun de ces combinaisons figurent à droite de la table de vérité. Nous pouvons
numéroter chaque ligne de la table de vérité. Nous parlerons de l‟équation d‟un minterme.
L'expression complète s'obtient en effectuant des OU logique de ces trois mintermes, ce qui
nous donne :

Nous pouvons écrire cette expression logique sous une forme compacte en indiquant
uniquement le numéro des mintermes à 1, soit :

Nous avons maintenant une équation logique non simplifiée. La première solution est
d‟utiliser l‟algèbre de Boole pour rechercher l‟expression la plus simple. Cela nécessite
beaucoup d‟expérience et de pratique. Il existe une méthode graphique efficace : la table de
Karnaugh.

3.5.5. La méthode des tables de Karnaugh


La table de Karnaugh est un outil graphique qui permet de simplifier de manière méthodique
une équation logique. Nous pourrons obtenir ensuite le schéma optimal correspondant au
circuit logique combinatoire. Bien que les tables de Karnaugh soient applicables à des
problèmes ayant un nombre quelconque de variables d'entrée, en pratique, ils ne sont plus
d'une grande utilité quand le nombre de variables dépasse cinq ou six. En plus, dans cette
section, nous n'allons pas aborder de problèmes ayant plus de quatre entrées. Les cas de
circuits ayant cinq et six entrées sont des problèmes d'envergure. Au delà, il est préférable de
résoudre les tables de Karnaugh avec un programme informatique. Le plus souvent il est
préférable d‟utiliser les méthodes de Quine et McClusky, réalisées par un programme
informatique.

3.5.6.1. La construction de la table de Karnaugh

La table de Karnaugh, tout comme la table de vérité, un instrument qui met en évidence la
correspondance entre les entrées logiques et la sortie recherchée. La figure 5- 3 nous fait voir
trois exemples de tables de Karnaugh pour deux, trois et quatre variables, ainsi que les tables
de vérité correspondantes. La table de vérité donne la valeur de la sortie X pour chacune des
combinaisons des valeurs d'entrée, par contre, la table Karnaugh organise l'information de
manière différente. A chaque ligne de la table de vérité correspond une cellule de la table de

61
Karnaugh. Mais les cellules dans la table de Karnaugh ne sont pas dans le même ordre. Par
exemple, à la figure 5- 3 a), la ligne BA = 00 de la table de vérité correspond à la cellule
située au croisement de B = 0 et A = 0 de la table de Karnaugh. Étant donné que pour cette
ligne X vaut 1, on inscrit 1 dans cette cellule. De même, on associe à la ligne BA = 11 la
cellule qui a les coordonnées B = 1 et A = 1. Comme X vaut aussi 1 dans ce cas, on retrouve
un 1 dans celle-ci. Les autres cellules de la table de Karnaugh contiennent des 0. Le même
raisonnement s'applique pour les tables à trois et quatre variables.

Figure 3.20: Les tables de Karnaugh pour a) deux et b) trois variables.

La construction de la table de Karnaugh garantit qu‟il n‟y a qu‟une seule variable qui change
entre deux cases voisines. Dans la table b) de la figure 3.20 nous allons étudier le cas de la
case située au croisement de CB = 11 et A = 0 qui correspond au minterme = . Nous
avons trois cases voisines, soit :
• case voisine à droite CB = 10 et A = 0, minterme = la variable B change ;
• case voisine à gauche CB = 01 et A = 0, minterme = la variable C change
• case voisine en bas CB = 11 et A = 1, minterme = la variable A change.

Nous voyons une autre propriété de la table de Karnaugh :


Chaque case a autant de cases adjacentes qu‟il y a de variables

62
Figure 3.21: Les tables de Karnaugh pour quatre variables.

3.5.6.2 Les réunions


Il est possible de simplifier l'expression de sortie X en combinant selon des règles précises les
cellules de la table de Karnaugh qui contiennent des 1. On donne à ce processus de
combinaison le nom de réunion.

a) Réunion de doublets (de paires)


La figure 3.22 reproduit la table Karnaugh correspondant à une certaine table de vérité à trois
variables. Il y a dans cette table deux 1 qui sont voisins verticalement. Ces deux termes
peuvent être réunis (combinés), ce qui a pour résultat d'éliminer la variable A. Le même
principe joue toujours pour tout doublet de 1 voisins verticalement ou horizontalement. La
ligne du haut est considérée comme adjacente à la ligne du bas, idem pour la colonne de
gauche avec la colonne de droite.

63
Figure 3.22: Exemple de réunion de doublet
Nous pouvons démontrer la simplification de la variable A par l‟algèbre de Boole. L‟équation
logique du groupement correspond à la somme logique des deux mintermes, soit :
minterme de la case du haut :
minterme de la case du bas :
d’où l’équation :
finalement .

b) Réunion de quartets (groupes de quatre)


Il peu arriver qu'une table de Karnaugh contienne quatre 1 qui soient adjacents. La figure 3.23
regroupe plusieurs exemples de tels quartes. En a) les quatre 1 sont voisins horizontalement,
alors qu'en b), ils le sont verticalement. La table de c) renferme quatre 1 arrangés en carré qui
sont considérés adjacents les uns aux autres. Les quatre 1 de d) sont aussi adjacents, parce
que, comme nous l'avons déjà dit, dans une table de Karnaugh les lignes du haut et du bas et
les colonnes droite et gauche sont considérées comme adjacentes.

64
Figure 3.23: Exemple de réunion de quartets.

c) Réunion d'octets (groupes de huit)


Quand on réunit huit 1 adjacents, on dit qu'on réunit un octet de 1 adjacents. On peut voir à la
figure 3.24 deux exemples de réunion d'octets. La réunion d'un octet dans une table de
Karnaugh à quatre variables donne lieu à l'élimination de trois variables.

Figure 3.24: Exemple de réunion d'octets.

3.5.6.3 Le processus de simplification au complet

Nous venons de voir comment la réunion de doublets, de quartets et d'octets de 1 adjacents


dans une table Karnaugh aboutit à une expression simplifiée. Il est clair que plus une réunion
regroupe de 1, plus le nombre de variables éliminées est grand. Plus précisément encore, une
réunion de
deux 1 provoque l'élimination d'une variable, un réunion de quatre 1, l'élimination de deux
variables et une réunion de huit 1, l'élimination de trois variables et ainsi de suite. La réunion
de 2n 1 permet de simplifier n variables.
Voici les étapes à suivre pour simplifier une expression booléenne en recourant à la méthode
des tables de Karnaugh:
a. Dessinez la table de Karnaugh et placez des 1 dans les carrés correspondant aux
lignes de la table de vérité dont la sortie est 1. Mettez des 0 dans les autres carrés.
b. Etudiez la table de Karnaugh et repérez tous les groupes possibles. Trouvez les plus
grands ;
c. Commencez ensuite par encercler les 1, dit isolés, qui ne font parties que d'un seul
groupe. Cela signifie que pour ces 1, il n'existe qu'une seul possibilité de groupement ;
d. Continuer ensuite à prendre les groupes les plus grands qui inclue des 1 (au
minimum un seul) qui ne font pas partie d'un autre groupe ;
e. Vous devez prendre tous les 1 de la table de Karnaugh. Il est possible d'utiliser
plusieurs fois le même 1 ;
f. Effectuez des OU logique entre tous les termes résultant des réunions

3.5.6.4 Les conditions indifférentes


Certains circuits logiques peuvent être conçus où pour certaines combinaisons d'entrée ne
correspondent aucun état logique particulier pour la sortie. La principale raison est souvent
que ces combinaisons d‟entrées ne doivent jamais survenir. En d'autres mots, il y a certaines
combinaisons des d'entrée pour lesquelless il nous importe peu que la sortie soit HAUTE ou

65
BASSE. Une illustration de ce qu'on veut dire est donnée dans la table de vérité de la figure
3.25
Dans cette table aucun état de la sortie Z ne figure pour les combinaisons CBA = 100 et CBA
= 011. Au contraire, on a mis un X. Ce X signifie une condition indifférente. Plusieurs raisons
peuvent expliquer la présence de conditions indifférentes, la plus courante étant que dans
certaines situations ces combinaisons d'entrée ne peuvent jamais survenir; par conséquent, il
est inutile de préciser pour elles une valeur de sortie.

Figure 3.25: Exemple d'application de Karnaugh avec des états indifférents

En présence de conditions indifférentes, nous devons décider quel x de sortie est remplacé par
un 0 et quel x est remplacé par un 1. Le choix est donné en recherchant la façon la plus
efficace de grouper les 1 adjacents de la table de Karnaugh. L‟objectif est d‟obtenir
l'expression la plus simple.

3.5.6.5 Exemples

Exemple 34 : Soit une fonction Z définie par la table de vérité ci-dessous et ayant le
diagramme de Karnaugh suivant:

66
La lecture la plus simplifiée donne:

ou l'équivalent analytique

On aurait pu aussi lire l'expression plus compliquée de la fonction:

Exemple 35 : Simplifiez la fonction

En identifiant chaque terme de l'expression, le diagramme de Karnaugh de cette fonction


s'écrit:

67
Mais ce diagramme peut être lu d'une autre manière en regroupant le plus grand nombre
possible de polynômes minimaux de quatre variables, c'est-à-dire en considérant les formes
rectangulaires les plus grandes possibles. On a:

d'où on tire l'expression plus simple et équivalente:

68

Vous aimerez peut-être aussi