Hors programme. La porte NAND, définie par a nand b = not(a and b)…
Exercice supplémentaire · niveau 2 · NSI (première), chapitre 2 — Flottants, booléens et textes · Algèbre de Boole au-delà de trois opérateurs
Énoncé
Hors programme. La porte NAND, définie par , est universelle : elle suffit à reconstruire not, and et or. Le démontrer et le vérifier en Python.
Corrigé
Les trois constructions.
La première : . La deuxième est la définition, niée. La troisième est De Morgan : .
def nand(a, b):
"""NAND sur des bits 0/1. Precondition : a et b valent 0 ou 1."""
return 1 - (a & b)
def non(a):
return nand(a, a)
def et(a, b):
return nand(nand(a, b), nand(a, b))
def ou(a, b):
return nand(nand(a, a), nand(b, b))
>>> [(a, b, non(a), et(a, b), ou(a, b))
... for a in (0, 1) for b in (0, 1)]
[(0, 0, 1, 0, 0), (0, 1, 1, 0, 1),
(1, 0, 0, 0, 1), (1, 1, 0, 1, 1)]
Les colonnes reconstruites coïncident avec a & b et a | b sur les quatre lignes.
Pourquoi cela compte. Un fondeur qui sait graver une porte sait graver toutes les fonctions logiques. Les circuits réels sont donc massivement construits en NAND — c'est une porte plus simple et plus rapide à fabriquer en technologie CMOS qu'un ET suivi d'un NON.
Prolongement : NOR est l'autre porte universelle. En revanche and, or sans not ne l'est pas : ces deux opérateurs rendent sur , donc toute combinaison en fait autant, et not est hors d'atteinte.
Les autres exercices de ce chapitre Le cours du chapitre
Un blocage sur cet exercice ? Le tuteur d'Adloun guide par questions, sans donner la réponse.