un ordinateur ne manipule que des 0 et des
1 (électricité ou pas)
=> vus aussi comme des valeurs de vérité
0 = faux = False1 = vrai = True=> une valeur booléenne (George Boole, 1815-1864)
le plus petit type de donnée possible : 1 bit
réponse à une question fermée (oui / non)
| circuits | tables | Python |
|---|---|---|
| tension haute (5V ou 3.3V) | 1 |
True |
| tension basse (0V) | 0 |
False |
dans ce cours : surtout 0 et 1
combiner des booléens : NON, ET, OU, + OU exclusif
exemple : « la porte est-elle fermée ET la lumière allumée ? »
porte logique = composant électronique qui réalise un opérateur
un processeur moderne : plusieurs milliards de portes
table de vérité = sortie pour toutes les combinaisons d’entrées
nombre de lignes :
pour n entrées
unaire : une seule entrée, on l’inverse
notations : NON a,
,
le petit rond = « et on inverse »
a |
NON a |
|---|---|
| 0 | 1 |
| 1 | 0 |
vaut 1 si et seulement si les deux entrées valent 1
« il faut le badge et le code »
notations : , => comme une multiplication
a |
b |
a ET b |
|---|---|---|
| 0 | 0 | 0 |
| 0 | 1 | 0 |
| 1 | 0 | 0 |
| 1 | 1 | 1 |
vaut 1 dès qu’au moins une entrée vaut 1
attention : OU inclusif (les deux à 1 => 1 aussi)
notations : ,
a |
b |
a OU b |
|---|---|---|
| 0 | 0 | 0 |
| 0 | 1 | 1 |
| 1 | 0 | 1 |
| 1 | 1 | 1 |
vaut 1 quand les entrées sont différentes
« fromage ou dessert », mais pas les deux
symbole du OU + barre supplémentaire à l’arrière
notation :
a |
b |
a XOR b |
|---|---|---|
| 0 | 0 | 0 |
| 0 | 1 | 1 |
| 1 | 0 | 1 |
| 1 | 1 | 0 |
0à réutiliser plus loin (demi-additionneur)
versions niées de ET et OU (plus simples à fabriquer)
a NAND b = NON (a ET b)a NOR b = NON (a OU b)symbole du ET / du OU + petit rond

a |
b |
a NAND b |
a NOR b |
|---|---|---|---|
| 0 | 0 | 1 | 1 |
| 0 | 1 | 1 | 0 |
| 1 | 0 | 1 | 0 |
| 1 | 1 | 0 | 0 |
culture : NAND est universelle (tout circuit se refait avec des NAND)
toutes les entrées à gauche, un opérateur par colonne
a |
b |
NON a |
ET |
OU |
XOR |
NAND |
NOR |
|---|---|---|---|---|---|---|---|
| 0 | 0 | 1 | 0 | 0 | 0 | 1 | 1 |
| 0 | 1 | 1 | 0 | 1 | 1 | 1 | 0 |
| 1 | 0 | 0 | 0 | 1 | 1 | 1 | 0 |
| 1 | 1 | 0 | 1 | 1 | 0 | 0 | 0 |
NON a ne dépend que de a (opérateur
unaire)NAND = colonne ET
inversée, NOR = colonne OU
inverséeOU et XOR ne diffèrent que sur la
dernière ligne (les deux entrées à 1)ET : 1 fois sur 4 ; OU : 3 fois sur 4=> un aide-mémoire, pas quelque chose à apprendre par cœur
simulateur de circuits logiques (via Capytale)
attention : le simulateur vérifie une table de vérité, il ne la remplace pas
n =>
lignes=> on ne devine jamais la sortie, on avance porte par porte
E1,E2 => AE2,E3 => BA,B => SE2 alimente deux portes : le fil se divise
E1 |
E2 |
E3 |
A = E1 ET E2 |
B = E2 OU E3 |
S = A XOR B |
|---|---|---|---|---|---|
| 0 | 0 | 0 | 0 | 0 | 0 |
| 0 | 0 | 1 | 0 | 1 | 1 |
| 0 | 1 | 0 | 0 | 1 | 1 |
| 0 | 1 | 1 | 0 | 1 | 1 |
| 1 | 0 | 0 | 0 | 0 | 0 |
| 1 | 0 | 1 | 0 | 1 | 1 |
| 1 | 1 | 0 | 1 | 1 | 0 |
| 1 | 1 | 1 | 1 | 1 | 0 |
=> sortie à 1 dans 5 cas sur 8
Même travail (avec les colonnes intermédiaires) pour les circuits 2 et 3 de la feuille Exos portes logiques.
expression booléenne = formule combinant des
variables avec NON, ET, OU,
XOR
le circuit 1 :
deux écritures du même objet
Feuille Exos expressions booléennes :
méthode : nommer la sortie de chaque porte (A,
B, C), puis remplacer de proche en proche
comme en maths ()
NONETOU (et XOR)à priorité égale : de gauche à droite
moyen de retenir : ET = multiplication, OU
= addition
a OU b ET c se lit a OU (b ET c)NON a ET b se lit (NON a) ET bNON (a ET b), qui est un NAND
!a |
b |
(NON a) ET b |
NON (a ET b) |
|---|---|---|---|
| 0 | 0 | 0 | 1 |
| 0 | 1 | 1 | 1 |
| 1 | 0 | 0 | 1 |
| 1 | 1 | 0 | 0 |
en cas de doute => parenthéser
même méthode : une colonne par opérateur, dans l’ordre des priorités
a |
b |
S |
||||
|---|---|---|---|---|---|---|
| 0 | 0 | 1 | 1 | 0 | 0 | 0 |
| 0 | 1 | 1 | 0 | 0 | 1 | 1 |
| 1 | 0 | 0 | 1 | 1 | 0 | 1 |
| 1 | 1 | 0 | 0 | 0 | 0 | 0 |
=> c’est la table du XOR : on l’a reconstruit avec NON, ET, OU
Exercice 3 de la feuille Exos expressions booléennes : quatre expressions, table de vérité complète avec les colonnes intermédiaires
les deux premières sont chacune une porte du cours : lesquelles ?
deux expressions sont équivalentes si elles ont la même table de vérité
seul critère : ni l’écriture, ni le nombre de portes ne comptent
au programme : dresser la table de vérité d’une expression, et passer du schéma à l’expression
le calcul sur les expressions (règles ci-dessous, simplification, De Morgan) n’est pas exigible, ce ne sera pas demandé en devoir
simplifier une expression = fabriquer le circuit avec moins de portes
| règle | écriture |
|---|---|
| élément neutre | a ET 1 = a ; a OU 0 = a |
| élément absorbant | a ET 0 = 0 ; a OU 1 = 1 |
| idempotence | a ET a = a ; a OU a = a |
| complément | a ET (NON a) = 0 ; a OU (NON a) = 1 |
| double négation | NON (NON a) = a |
| De Morgan | NON (a ET b) = (NON a) OU (NON b) |
NON (a OU b) = (NON a) ET (NON b) |
table d’addition binaire (chapitre B.1) :
dernier cas : ça ne tient plus sur un bit
=> il faut deux sorties
S (les unités)R (à reporter à
gauche)E1 |
E2 |
résultat | R |
S |
|---|---|---|---|---|
| 0 | 0 | 00 |
0 | 0 |
| 0 | 1 | 01 |
0 | 1 |
| 1 | 0 | 01 |
0 | 1 |
| 1 | 1 | 10 |
1 | 0 |
colonne par colonne :
R = 1 seulement si les deux entrées sont à 1 =>
ETS = 1 si les entrées diffèrent =>
XOR
les deux entrées alimentent les deux portes : les fils se divisent
Construire ce circuit dans le simulateur, vérifier les 4 lignes de sa table.
sur plusieurs bits, chaque colonne additionne trois bits : les deux bits du rang + la retenue précédente
1 1 1 1 <- retenues
1 0 1 1
+ 0 1 1 1
---------
1 0 0 1 0
A + BSles deux retenues ne valent jamais 1 en même temps
A = B = 1, la somme du n° 1 vaut 0=> le cas « 1 + 1 » ne se présente jamais à l’entrée du OU
huit additionneurs complets, un par colonne
0)r8 = 9e bit => dépassement de
capacité si elle vaut 1=> additionneur à propagation de retenue : chaque étage attend son voisin de droite
Exercice 4 de la feuille Exos expressions booléennes : compter les portes de l’additionneur 8 bits, et y poser une addition qui déborde
8, 32, 64 additionneurs bout à bout => l’unité de calcul du processeur
=> l’addition est entièrement ramenée à de la logique booléenne