← Retour au cours Logique booléenne Essayer le simulateur

Des booléens aux circuits

matériel

Une porte logique est un composant physique qui calcule un opérateur booléen sur des signaux électriques (0 V / 5 V).

AND, OR, NOT, XOR
Portes de base, une par opérateur
NAND, NOR
= AND/OR suivi d'un NOT
Universelles
NAND seule suffit à reconstruire tout circuit

Demi-additionneur

exemple classique

Additionner deux bits avec deux portes seulement : XOR pour la somme, AND pour la retenue.

s = a XOR b
Bit de somme
r = a AND b
Bit de retenue (« carry »)

📦 Le cours : les portes de base

Une porte logique traduit un opérateur booléen en composant électronique : une ou deux entrées, une sortie, calculée quasi instantanément. Un processeur en contient plusieurs milliards, assemblées en circuits.

AND, OR, NOT, XOR

          ┌─────┐                      ┌─────┐
   a ────►│     │               a ────►│     │
          │ AND ├────► s               │ OR  ├────► s
   b ────►│     │               b ────►│     │
          └─────┘                      └─────┘

          ┌─────┐                      ┌─────┐
   a ────►│ NON ├────► s        a ────►│     │
          └─────┘               b ────►│ XOR ├────► s
                                        └─────┘
abANDORXOR
00000
01011
10011
11110

NAND et NOR : les portes universelles

NAND = NON (a ET b), NOR = NON (a OU b) — l'inverse exact de AND et OR.

abNANDNOR
0011
0110
1010
1100

Propriété remarquable : on peut reconstruire NOT, AND et OR avec des portes NAND uniquement (ex. NON a = a NAND a). C'est pour cela que NAND est dite universelle : un fabricant de puces peut produire un seul type de porte et assembler tous les circuits avec.

Circuit : le demi-additionneur

Additionner deux bits a et b donne un résultat sur 2 bits : la somme et la retenue.

abretenue (r)somme (s)
0000
0101
1001
1110

La colonne « somme » est exactement la table du XOR, et la colonne « retenue » celle du AND : 2 portes suffisent.

          ┌─────┐
   a ────►│     │
          │ XOR ├────► s (somme)
   b ────►│     │
          └─────┘

          ┌─────┐
   a ────►│     │
          │ AND ├────► r (retenue)
   b ────►│     │
          └─────┘

Pour additionner des nombres de plusieurs bits, on chaîne des additionneurs complets (qui prennent aussi une retenue entrante) — hors programme de Première, mais directement construit à partir des mêmes portes de base.

💻 Simuler le circuit en Python

demi_additionneur.py
def demi_additionneur(a, b):
    somme = a != b        # porte XOR
    retenue = a and b     # porte AND
    return somme, retenue

for a in (False, True):
    for b in (False, True):
        s, r = demi_additionneur(a, b)
        print(f"a={int(a)} b={int(b)} -> retenue={int(r)} somme={int(s)}")

📋 Aide-mémoire

NAND et NOR sont universelles : tout circuit peut être reconstruit avec l'une des deux seules.

Demi-additionneur : somme = XOR, retenue = AND — 2 portes, 2 entrées, 2 sorties.