Chapitre 1 Logique
Chapitre 1 Logique
Chapitre 1 Logique
l’information
Ces deux états sont notés ’0’ et ’1’ ; ils correspondent le plus souvent aux deux tensions électriques 0v
et +Vcc respectivement, VCC valant exactement +5v pour des circuits utilisant la technologie TTL, et une
valeur comprise entre 2v et 15v environ en technologie CMOS (des valeurs de Vcc=3.3v, 2.5v et 1.8v
étant utilisée de plus en plus souvent).
Les circuits logiques qui sont utilisés pour combiner et transmettre les signaux électriques logiques ont
des caractéristiques non linéaires qui ont entre autres pour fonction de remettre en forme un signal
déformé par le bruit.
On voit sur la figure ci dessous une porte « non » qui inverse le bit d’entrée, tout en produisant un signal
de sortie de meilleure qualité que le signal d’entrée.
Les signaux pourront donc traverser un nombre quelconque d’étages de circuits logiques sans que les
déformations initiales ne soient amplifiées.
1
2 Les systèmes de numération
Il est important de connaître les différents systèmes car ils sont utilisés en informatique et plus
généralement dans le traitement de l'information. Selon le contexte il peut être plus judicieux d'utiliser un
code plutôt qu'un autre, il faut donc savoir comment passer de l'un à l'autre.
La représentation polynomiale
On utilise les " systèmes de numération" pour compter des objets et de les représenter par des nombres.
Trois notions interviennent dans un système:
* la base B du système, c'est un nombre entier quelconque.
* Les digits du système sont des caractères différents et représentent chacun un élément de la base; il y
en a donc B au total.
* Poids du digit selon son rang.
Quelque soit la base employée, Un système de numérotation positionnel pondéré à base B suit la relation
polynomiale suivante :
Si la base 10 nous est familière, d’autres bases existent et les bases les plus utilisées en informatique sont
les bases 10, 2, 8 et 16 appelées respectivement « décimale », « binaire », « octale » et « hexadécimale ».
2
Dans le cas des nombres fractionnaires, on attribue aux chiffres situés à droite de la virgule des
puissances négatives de 10.
Exemple : N= (359.26)10
N = 3.102 + 5.101 + 9.100 + 2.10-1+6.10-2 =300+50+9+0.2+0.06.
Cette méthode de décomposition sera utilisée pour toutes les autres bases.
* Dans ce système, la base B vaut 2, et il y a donc 2 digits 0 et 1appelés dans ce cas " BIT" (Binary
digIT).
* Le système binaire est pondéré par 2 : les poids sont des puissances de 2 ; un nombre binaire sera donc
constitué d’une suite de 0 et de 1.
Exemple
N= 11001 exprimé en binaire signifie: (11001)2 =1 × 2 + 1 × 2 + 0 × 2 + 0 × 2 + 1 × 2 =
(25) .
Comptage binaire
On présente les nombres binaires en général avec un nombre fixe de bits, nombre imposé par les circuits
mémoires utilisés pour représenter ces nombres.
Suite des nombres binaires à 4 bits :
3
Le bit le plus significatif – le bit le plus à gauche – est appelé « bit de poids fort » ou MSB (Most
Significant Bit). Le bit le moins significatif – le bit le plus à droite – est appelé « bit de poids faible » ou
LSB (Less Significant Bit).
Si on utilise N bits, on peut représenter 2N valeurs différentes de 20 à 2N-1.
Connaissons les systèmes binaire et décimal, étudions maintenant deux autres systèmes de numération
très répandus dans les circuits numériques. Il s'agit des systèmes de numération octale (base de 8) et
hexadécimal (base de 16) qui servent tous les deux au même but, soit celui de constituer un outil efficace
pour représenter de gros nombres binaires.
L’intérêt de ce système est que la base 8 est une puissance de 2 (8= 23), donc les poids sont aussi des
puissances de 2. Chaque symbole de la base 8 est exprimé sur 3 éléments binaires : (ai)8=bi2bi1bi0
Exemple : (52.3)8=(101010,011)2
4
2.5.2 Passage d'un Système Décimal à un système de Base « A »
La règle à suivre est les divisions successives :
* On divise le nombre par la base b
* Puis le quotient par la base b
* Ainsi de suite jusqu’à l’obtention d’un quotient nul
* La suite des restes des divisions successives pris dans l’ordre inverse correspond aux symboles de la
base visée.
* On obtient en premier le chiffre de poids faible et en dernier le chiffre de poids fort.
* Pour la partie fractionnaire on multiplie par B jusqu’à obtenir un résultat nul ou la précision souhaitée.
A chaque multiplication nous obtenons une partie entière et un reste. Il est important de noter que le
nombre binaire résultant s'obtient en écrivant le premier chiffre à la position du bit de poids le plus fort
(MSB).
5
b) Conversion décimal vers octal
Il est possible de convertir un nombre décimal entier en son équivalent octal en employant la méthode
de la répétition de divisions, la même qu'on a utilisée pour la conversion décimal-binaire, mais cette fois-
ci en divisant par 8 plutôt que par 2.
Exemple
(73)10= (?)8
Notez que le premier reste devient le chiffre de poids le plus faible du nombre octal et que le dernier reste
devient le chiffre de poids le plus fort.
Le problème est que les symboles « 11 » et « 10 » n'existent pas dans la base 16. Il faut les remplacer par
leur équivalent :
La lecture se fait de la même manière que précédemment. Le résultat est donc : (1AB16.
d) Tableau de correspondance
A partir de ces techniques nous pouvons établir le tableau de correspondance d'une même quantité dans
différentes bases.
6
e) Conversion octal-binaire/ binaire-octal
Pour l'instant nous n'avons vu que des techniques de conversion tournant autour du système décimal.
Dans le cas de la conversion binaire vers octal, il n'est pas nécessaire de partir du binaire pour aller vers le
décimal, puis du décimal aller vers l'octal.
On peut remarquer que 8 = 23 ; On peut donc faire correspondre à chaque digit d'un nombre exprimé en
octal un ensemble de 3 bits du même nombre exprimé en binaire.
Exemple
(763)8=( ?)2=(111)(110)(011) =(111110011)2
La conversion inverse, binaire → octal, se fait de la même façon, en décomposant le nombre binaire par
ensembles de 3 bits en portant du chiffre de poids le plus faible puis de convertir ces triplets en leur
équivalent octal.
Exemple
(010111011101)2=(2735)8
Notez l’ajout d’un zéro à gauche du bit de poids le plus fort pour obtenir un nombre juste de triplet.
7
g) Conversion d'une base i vers base j
Exemple : Soit à déterminer la représentation signe-valeur absolue de chacun des nombres décimaux 55,
-60 et 0 sur 8 bits.
+0 = 000000002 et -0 = 10000000SM
La valeur d’un nombre décimal N ayant une représentation signe-valeur absolue est donnée par :
= (−1) 2
La représentation signe-valeur absolue possède deux inconvénients. Le premier est lié aux deux
représentations, +0 et -0, du nombre 0. Le second tient au fait que cette représentation n’est pas
appropriée pour les opérations d’addition, La représentation par complément à deux permet de remédier à
ces inconvénients.
8
3.2 Représentation par complément à deux
a) Notation en complément à 1 (complément restreint)
Le complément à 1 d'un nombre binaire s'obtient en changeant chaque 0 par un 1 et chaque 1 par un 0.
Autrement dit, en complémentant chaque bit du nombre. Voici une illustration de cette marche à suivre:
1 0 1 1 0 1 nombre binaire initial
0 1 0 0 1 0 complément de chaque bit pour obtenir le complément à 1(Cp à 1).
(b) Notation en complément à 2 (complément vrai)
Il s'obtient simplement en prenant le complément à 1 de ce nombre et en ajoutant 1 au bit de son rang de
poids le plus faible.
Complément à 2 de N = Cp à1(N) + 1
Exemple
Calculer le Cp à 2 de 1 sur 4 bits.
Nous commençons par exprimer le nombre 1 sur 4 bits puis nous appliquons la règle de calcul du
complément à 2.
La valeur d’un nombre décimal N ayant une représentation par complément à deux est donnée par :
=− 2 + 2
Avec des mots de n éléments binaires, on obtient 2n valeurs différentes, de 0 à 2n-1-1 pour les valeurs
positives et de -1 à -2n-1 pour les valeurs négatives, soit des nombres compris entre -2n-1 à 2n-1-1.
9
4 Opérations arithmétiques en binaire
Les diverses opérations arithmétiques qui interviennent dans les ordinateurs et les calculatrices portent
sur des nombres exprimés en notation binaire. es opérations arithmétiques obéissent en binaire aux
mêmes règles qu’en décimal, il suffit juste de se rappeler que la base de numération est 2 et non plus 10.
4.1 Addition:
L’addition en binaire se fait avec les mêmes règles qu’en décimal : on commence par additionner les
bits de poids faibles ; on a des retenues lorsque la somme de deux bits de même poids dépasse la valeur
de l’unité la plus grande (dans le cas du binaire:1) ; cette retenue est reportée sur le bit de poids plus fort
suivant. La table d’addition binaire est la suivante :
En pratique, pour additionner plus de deux nombres, un système numérique détermine d’abord la somme
de deux premiers nombres puis ajoute cette somme aux troisième nombre, et ainsi de suite.
4.2 Soustraction:
Dans la soustraction binaire, on procède comme en décimal. Quand la quantité à soustraire est
supérieure à la quantité dont on soustrait, on emprunte 1 au voisin de gauche. En binaire, ce 1 ajoute 2 à
la quantité dont on soustrait, tandis qu’en décimal il ajoute 10.
La table de soustraction binaire est la suivante :
1010 10 Diminuende
- 0101 - 5 Diminuteur
=0101 = 5 Différence
10
* Soustraction dans le cas des calculateurs
Dans la pratique, l’opération de base des calculateurs électroniques est l’addition. Le résultat d’une
soustraction de deux nombres binaires est en fait obtenu par l’addition du premier nombre par le
complément à 2 du deuxième. Ainsi :[ − ] = [ + (− )].
La méthode la plus utilisée pour rendre négatif un nombre binaire est la méthode du complément à 2.
On a donc : [A-B]= A+ Cp à 2 de B
1- On convertie son amplitude(N) en format proposé.
2- On ajoute un bit de signe égale à 0 pour représenter le nombre positif.
3-On prend le complément à deux du nombre positif pour représenter le nombre négatif –N.
Exemple : soit à effectuer l’opération suivante : 195 –96
195 – 96 = 195 + (-96)
Soit en binaire :
195=110000112
96 =011000002
Si l’on travail en représentation signée, le nombre 195 (+195) doit être représenté sur plus de 8 bits si l’on
veut que son bit de signe soit positif. Nous travaillerons donc sur 9 bits pour représenter son signe . On
aura donc :
195= 0110000112
96 = 0011000002
Cpà1 = 110011111
+ 1
195 011000011
+(-) 96 + 110100000
= 99 1001100011 Puisque l’on travaille sur 9 bits, cette retenue est négligée.
4.3 Multiplication:
La multiplication s’effectue en formant un produit partiel pour chaque bit du multiplicateur, et ensuite en
additionnant tous les produits partiels pour générer le résultat. Il est à noter que chaque produit partiel est
décalé d’une position vers la gauche par rapport au précédent, et le produit de deux nombres de n bits
peut posséder jusqu'à 2n bits.
La table de multiplication en binaire se résume comme suit :
11
0×0= 0 ; 0×1= 0 ; 1×0 =0 ; 1×1 =1
On distingue deux catégories de codes: les "codes numériques" qui permettent seulement le codage des
nombres, et les "codes alphanumériques" qui permettent le codage d'une information quelconque
(ensembles de lettres, de chiffres et de symboles).
12
bits pour coder les chiffres. C’est un code pondéré avec les poids 1, 2, 4, 8, 16... Plus facile pour coder
des grands nombre, il est surtout utilisé pour l’affichage des nombres.
Remarque : Il ne faut pas confondre le code DCB et le code binaire pur : quand on code selon le code
binaire pur on prend le nombre dans son intégralité et on le convertit ; par contre, quand on code en DCB
on code chaque chiffre indépendamment les uns des autres.
Exemple
(137)10 =(010001001)2
=(000100110111)BCD
Le code BCD nécessite 12 bits pour représenter 137 tandis que le nombre binaire pur n'a besoin que de
8 bits. Il faut plus de bits en BCD qu'en binaire pur pour représenter les nombres décimaux de plus d'un
chiffre.
Le code BCD établit 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.
Comme tous les systèmes de codage pondérés, il est possible d’appliquer des opérations arithmétiques
aux nombres codés en DCB.
Addition en DCB
L’addition de deux nombres codés en DCB ne pose pas de problème tant que le résultat est inférieur ou
égal à 9 :
5 0101 BCD de 5
+ 4 0100 BCD de 4
=9 1001 BCD de 9
L'addition est effectuée comme une addition binaire normale et la somme est 1001, soit le code BCD de
9.
Voici un autre exemple: additionnons 45 à 33.
Les codes de 4 bits associés à 5 et à 3 sont additionnés selon les règles binaires pour donner 1000, ce
qui est le code BCD de 8. De même, l'addition des chiffres décimaux de second rang donne en binaire
0111, ce qui est le code BCD de 7. Le total est 0111 1000, soit le code BCD de 78.
13
Par contre, dès que le résultat est supérieur à 9, il faut apporter une correction en additionnant 6, de
manière à obtenir une réponse valide. Ceci est dû au fait que l’on représente un nombre modulo 10 avec
un code modulo 16 : 16-10=6.
Exemple
L'addition des codes de 4 bits pour 7 et 5 produit une somme non valide que l'on corrige en additionnant
0110 sur ces 4 bits de poids faible. Notez que ceci produit un report de 1, qui est ajouté à la somme BCD
des chiffres du second rang.
14
5.2 Codes numériques non pondérés
Le code excédent de trois consiste à prendre chaque chiffre décimal, à lui additionner 3, puis à
convertir le résultat obtenu en binaire. On a parfois recours à ce code en raison de la facilité avec laquelle
on peut faire certains calculs arithmétiques. La valeur d’un mot en code excédent de trois est en fait égale
au code DCB auquel on a ajouté 3.
Exemple
4810=01111011XS3
Le code Gray est un code non pondéré, car n’associant pas des poids spécifiques aux positions des bits.
Il ne convient pas pour les opérations arithmétiques. La représentation de gray permet de passer du code
d’un nombre au suivant en ne changeant qu’un seul bit. Le tableau ci-dessous donne la représentation
binaire et le code gray des nombres décimaux de 0 à 15.
Remarque :
Le code Gray est le code utilisé dans les tableaux de Karnaugh, afin de coder la valeur des différentes
entrées de telle sorte qu’une seule d’entre elles ne change de valeur d’une ligne à l’autre, ou d’une
colonne à l’autre.
- La conversion d’un nombre binaire en code Gray s’effectue en exploitant les remarques suivantes :
* Le bit de poids le plus fort du code gray, est le même que le MSB correspondant du nombre binaire ;
* En commençant par la gauche, additionner sans tenir compte de la retenue chaque paire de bits
adjacents du code binaire pour obtenir le bit suivant du code Gray.
15
Exemple : soit à convertir le nombre binaire en code gray.
Nombre binaire 1+1+0+0+1
Code Gray 1 0 1 0 1
16
Trouver la représentation en ASCII binaire d’un texte
En utilisant la table représentée ci dessous, on cherche le code ASCII de chaque caractère. Puis on traduit
chacun de ces nombres en représentation binaire.
ASCII Description
NUL (NULL) : caractère nul
0
Typiquement (et spécialement en PureBasic) utilisé pour indiquer la fin d'une chaîne.
1 SOH (Start Of Heading) : début de titre
17
Indique le début d'un bloc de données, ou la zone d'en-tête d'un bloc de données.
STX (Start of TeXt) : début de texte
2 Typiquement envoyé comme premier caractère dans un bloc de texte, pendant les
communications.
ETX (End of TeXt) : fin de texte
3 Typiquement envoyé comme dernier caractère dans un bloc de texte, pendant les
communications.
EOT (End Of Transmission) : fin de transmission
4
Utilisé pour indiquer la fin d'une transmission.
ENQ (ENQuiry) : requête - invitation à la transmission
5
Envoyé à un récepteur afin d'obtenir une réponse.
ACK (ACKnowledge) : accusé de réception
6
Envoyé par un récepteur pour indiquer qu'il a reçu et/ou compris la requête.
BEL (BELL) : cloche
7
Produit un signal sonore (provoque l'émission d'un 'bip' par le haut-parleur du PC)
BS (BackSpace) : retour arrière
8 Déplace le curseur d'une position vers la gauche (pourrait également effacer le caractère à
gauche du curseur avant d'effectuer le mouvement)
HT (Horizontal Tab) : tabulation horizontale
9
Typiquement utilisé pour la mise en forme de tableaux dans un texte.
LF (LineFeed) : saut de ligne
Le caractère utilisé pour représenter l'action de passer une ligne sur une machine à écrire
10
ou une imprimante en mode texte. Typiquement utilisé comme, ou partie des, caractères de
fin de ligne.
VT (Vertical Tab) : tabulation verticale
11 Même chose que la tabulation (horizontale), mais le déplacement s'effectue d'une rangée
vers le bas au lieu d'une colonne vers la droite.
FF (Form Feed) : saut de page
12 Caractère typiquement utilisé pour indiquer à une imprimante (en mode texte) de passer à
la page (feuille) suivante.
CR (Carriage Return) : retour chariot
Le caractère qui représente l'action de ramener la tête d'une machine à écrire ou d'une
13
imprimante au début de la ligne. Typiquement utilisé comme, ou partie des, caractères de
fin de ligne.
SO (Shift Out) : mouvement sortant
14
Début d'un bloc de caractères dont la signification dépend de l'implémentation.
SI (Shift In) : mouvement entrant
15
Ferme la transmission du type de bloc ci-dessus.
DLE (Data Link Escape) : échappement de lien de donnée
16 Utilisé pour indiquer que le caractère de contrôle suivant devrait être interprété comme
donnée et non comme caractère de contrôle.
DC1 (Device Control 1) : contrôle de périphérique 1
Typiquement utilisé pour activer une partie d'un équipement. L'usage le plus courant
17
aujourd'hui est en tant que caractère XON dans les communications série à contrôle de flux
logiciel.
DC2 (Device Control 2) : contrôle de périphérique 2
18
Un autre caractère de contrôle de périphérique. Son usage dépend du contexte.
DC3 (Device Control 3) : contrôle de périphérique 3
19 Typiquement utilisé pour désactiver une partie d'un équipement. L'usage le plus courant
aujourd'hui est en tant que caractère XOFF dans les communications série à contrôle de
18
flux logiciel.
DC4 (Device Control 4) : contrôle de périphérique 4
20
Un autre caractère de contrôle de périphérique.
NAK (Negative AcKnowledge) : accusé de réception négatif
21
Typiquement utilisé pour signaler des données non-reçues ou non-comprises (erronée).
SYN (SYNchronous idle) : attente synchronisée
22 Comme son nom l'indique, il s'agit d'un signal envoyé à intervalle régulier pour indiquer
que le canal de communication est en attente, mais toujours actif.
ETB (End of Transmission Block) : fin de transmission de bloc
23 Utilisé pour contrôler la transmission de donnée en indiquant la fin de bloc. A ne pas
confondre avec EOT.
CAN (CANcel) : annulation
24 Signifie généralement que la donnée envoyée précédemment devrait être ignorée, bien que
les détails dépendent de l'application.
EM (End of Medium) : fin de média
25
Utilisé pour indiquer la fin d'un média, par exemple la fin d'un lecteur de bande
SUB (SUBstitute) : substitution
26
Un caractère utilisé pour indiquer qu'un caractère a été substitué.
ESC (ESCape) : échappement
Le caractère produit habituellement en appuyant sur la touche 'ECHAP' de votre clavier,
27
utilisé dans les "séquences d'échappement" pour fournir des informations de formattage
aux afficheurs de texte (consoles, imprimantes, etc..)
28 FS (File Separator) : séparateur de fichier
29 GS (Group Separator) : séparateur de groupe
30 RS (Record separator) : séparateur d'enregistrement
31 US (Unit separator) : séparateur d'unité
7. Afficheur 7 segments
Les afficheurs 7 segments sont un type d'afficheur très présent sur les calculatrices et les montres à
affichage numérique : les caractères (des chiffres, bien que quelques lettres soient utilisées pour
l'affichage hexadécimal) s'écrivent en allumant ou en éteignant des segments, au nombre de sept. Quand
les 7 segments sont allumés, on obtient le chiffre 8. Cet afficheur est composé de diodes
électroluminescentes (DEL) disposées comme le montre la figure ci-dessous.
On distingue deux types d’afficheurs : l’afficheur à anode communes et celui à cathode communes. Dans
le premier cas, toutes les anodes sont reliées et connectées au potentiel haut. La commande du segment se
fait par sa cathode mise au potentiel bas. Dans le cas de l’afficheur à cathode communes, toutes les
cathodes sont reliées et connectées au potentiel bas. La commande du segment se fait par son anode mise
au potentiel haut.
19
8. Codes détecteurs d’erreurs et auto correcteurs
Ces codes sont utilisés pour contrôler la transmission des données. Souvent, on utilise un nombre de bits
supérieur à celui strictement nécessaire pour coder l’information elle-même.
20
Pour détecter la place d’un élément binaire faux, il faux coder dans deux dimensions selon les lignes et
les colonnes. Comme pour les lignes, on fixe un code de parité paire ou impaire pour les colonnes. Pour
localiser l’erreur, il suffit d’employer simultanément le contrôle de parité des lignes et des colonnes. Le
tableau ci-dessous montre un exemple dont les codes sont de parité paire.
Ligne n0 bit de parité nombre de 1 par ligne
1 0 0 1 0 0 1 2
2 1 0 1 0 1 0 3 erreur
3 0 0 0 1 0 1 2
4 0 0 1 1 1 1 4
5 0 1 1 0 0 0 2
6 1 1 0 0 1 1 4
Bit de parité 0 0 1 0 1 0 2
Nombre de 1 2 2 5 2 4 4
Par colonne erreur
L’erreur de trouve à l’intersection de la 2ème ligne et la 3ème colonne, puisque le nombre de bits est impair.
Il suffit donc de remplacer le 1 par 0 au point d’intersection.
21