Valeurs booléennes

Vrai / faux

Principe

un ordinateur ne manipule que des 0 et des 1 (électricité ou pas)

=> vus aussi comme des valeurs de vérité

=> une valeur booléenne (George Boole, 1815-1864)

le plus petit type de donnée possible : 1 bit

D’où ça vient ?

réponse à une question fermée (oui / non)

Deux notations, un seul objet

circuits tables Python
tension haute (5V ou 3.3V) 1 True
tension basse (0V) 0 False

dans ce cours : surtout 0 et 1

Opérateurs booléens et portes logiques

Opérateurs et portes

Opérateurs booléens

combiner des booléens : NON, ET, OU, + OU exclusif

exemple : « la porte est-elle fermée ET la lumière allumée ? »

Portes logiques

porte logique = composant électronique qui réalise un opérateur

un processeur moderne : plusieurs milliards de portes

Lire un schéma

Table de vérité

table de vérité = sortie pour toutes les combinaisons d’entrées

nombre de lignes : 2n2^n pour n entrées

Les portes de base

NON (NOT)

unaire : une seule entrée, on l’inverse

Porte NON

notations : NON a, a¯\overline{a}, ¬a\lnot a

le petit rond = « et on inverse »

a NON a
0 1
1 0

ET (AND)

vaut 1 si et seulement si les deux entrées valent 1

« il faut le badge et le code »

Porte ET

notations : a∧ba \land b, a⋅ba \cdot b => comme une multiplication

a b a ET b
0 0 0
0 1 0
1 0 0
1 1 1

OU (OR)

vaut 1 dès qu’au moins une entrée vaut 1

attention : OU inclusif (les deux à 1 => 1 aussi)

Porte OU

notations : a∨ba \lor b, a+ba + b

a b a OU b
0 0 0
0 1 1
1 0 1
1 1 1

OU exclusif (XOR)

vaut 1 quand les entrées sont différentes

« fromage ou dessert », mais pas les deux

Porte XOR

symbole du OU + barre supplémentaire à l’arrière

notation : a⊕ba \oplus b

a b a XOR b
0 0 0
0 1 1
1 0 1
1 1 0

XOR : deux façons de le voir

à réutiliser plus loin (demi-additionneur)

Portes dérivées

NAND et NOR

versions niées de ET et OU (plus simples à fabriquer)

symbole du ET / du OU + petit rond

Porte NAND Porte NOR

NAND et NOR : tables

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)

Récapitulatif des symboles

Symboles des portes logiques

Récapitulatif des tables de vérité

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

Comment lire ce tableau

=> un aide-mémoire, pas quelque chose à apprendre par cœur

Simulation

Simulateur

simulateur de circuits logiques (via Capytale)

attention : le simulateur vérifie une table de vérité, il ne la remplace pas

Combiner des portes

Méthode

Dresser la table de vérité d’un circuit

  1. compter les entrées n => 2n2^n lignes
  2. écrire toutes les combinaisons (= compter en binaire de 0 à 2n−12^n-1)
  3. une colonne intermédiaire par porte, dans l’ordre du signal
  4. remplir colonne par colonne, en n’utilisant que ce qui est déjà rempli
  5. la ou les dernières colonnes = la ou les sorties

=> on ne devine jamais la sortie, on avance porte par porte

Exemple

Le circuit

Circuit 1 du cours

E2 alimente deux portes : le fil se divise

Sa table de vérité

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

Exercices

Exercice

Même travail (avec les colonnes intermédiaires) pour les circuits 2 et 3 de la feuille Exos portes logiques.

Expressions booléennes

Écriture

Du schéma à l’expression

expression booléenne = formule combinant des variables avec NON, ET, OU, XOR

le circuit 1 :

S=(E1 ET E2) XOR (E2 OU E3)S = (E_1 \text{ ET } E_2) \text{ XOR } (E_2 \text{ OU } E_3)

deux écritures du même objet

Exercices : schéma <=> expression

Exercice

Feuille Exos expressions booléennes :

  • exercice 1 : du schéma vers l’expression (3 circuits)
  • exercice 2 : de l’expression vers le schéma (3 expressions)

méthode : nommer la sortie de chaque porte (A, B, C), puis remplacer de proche en proche

Priorités

comme en maths (2+3×4=142 + 3 \times 4 = 14)

  1. parenthèses
  2. NON
  3. ET
  4. OU (et XOR)

à priorité égale : de gauche à droite

moyen de retenir : ET = multiplication, OU = addition

Attention aux parenthèses

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

Tables et équivalences

Table d’une expression

même méthode : une colonne par opérateur, dans l’ordre des priorités

S=(a ET b¯) OU (a¯ ET b)S = (a \text{ ET } \overline{b}) \text{ OU } (\overline{a} \text{ ET } b)

a b a¯\overline{a} b¯\overline{b} a⋅b¯a \cdot \overline{b} a¯⋅b\overline{a} \cdot 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 : tables d’expressions

Exercice

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 ?

Équivalence

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

Règles utiles (pour info)

Non exigible

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

Règles utiles : la liste

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)

Application : le demi-additionneur

Le problème

Additionner deux bits

table d’addition binaire (chapitre B.1) :

dernier cas : ça ne tient plus sur un bit

=> il faut deux sorties

La table de vérité

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 :

Le circuit

Deux portes suffisent

R=E1 ET E2S=E1 XOR E2R = E_1 \text{ ET } E_2 \qquad S = E_1 \text{ XOR } E_2

Demi-additionneur

les deux entrées alimentent les deux portes : les fils se divisent

Demi-additionneur : exercice

Exercice

Construire ce circuit dans le simulateur, vérifier les 4 lignes de sa table.

Pourquoi « demi » ?

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

L’additionneur complet

Additionneur complet

Pourquoi un simple OU ?

les deux retenues ne valent jamais 1 en même temps

=> le cas « 1 + 1 » ne se présente jamais à l’entrée du OU

Additionner deux octets

Additionneur 8 bits

huit additionneurs complets, un par colonne

La chaîne des retenues

=> additionneur à propagation de retenue : chaque étage attend son voisin de droite

Exercice

Exercice

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

Au final

8, 32, 64 additionneurs bout à bout => l’unité de calcul du processeur

=> l’addition est entièrement ramenée à de la logique booléenne