Le transistor largement utilisé dans les circuits d'électronique analogique (comme amplificateur principalement) fonctionne très bien en tout ou rien. Comme on est arrivé à le miniaturiser et à le juxtaposer à grande échelle (un million sur quelques mm2), on a pu concevoir une électronique logique d'une grande complexité.
Une variable logique est binaire, elle ne peut prendre que deux valeurs qu'on choisit conventionnellement d'écrire 0 et 1. Autrement dit c'est un bit.
Un circuit logique a une entrée logique (ou plusieurs) et une sortie logique.
Le circuit le plus simple a une entrée et une sortie. Et comme fonction, la fonction logique NON (NOT en anglais). Il se traduit par la table de vérité :
NOT | |
0 | 1 |
1 | 0 |
Une fonction un peu plus compliquée est la fonction ET (AND) qui a deux entrées et la table de vérité :
and | 0 | 1 |
0 | 0 | 0 |
1 | 0 | 1 |
Comme on s'y attend pour un ET, la sortie ne vaut 1 que lorque les deux entrées valent 1.
Le OU (OR) est un peu le complément du ET :
or | 0 | 1 |
0 | 0 | 1 |
1 | 1 | 1 |
La sortie vaut 1 dès que l'une des entrées vaut 1. C'est le OU inclusif.
Le OU exclusif (XOR) :
xor | 0 | 1 |
0 | 0 | 1 |
1 | 1 | 0 |
correspond au ou de l'un ou l'autre.
Considérons l'addition, la plus simple qui soit, de deux variables logiques. Chacune vaut 0 ou 1, la somme vaut donc :
add | 0 | 1 |
0 | 0 | 1 |
1 | 1 |
où l'on a laissé une case vide car la somme de 1 et 1 vaut 2 ce qui n'entre pas dans le cadre d'une variable logique (un seul chiffre binaire).
2 s'écrivant 10, il est naturel de compléter la case vide par un 0 en précisant qu'il y a une retenue de 1. Cette retenue ne vaut 1 que lorsque les deux variables à ajouter valent 1.
La fonction addition (sur un chiffre) est donc réalisée par un XOR pour le dernier chiffre et à un AND pour la retenue.
La suite peut s'imaginer en rajoutant des circuits pour les autres bits pour faire un additionneur 8 bits, puis à composer le circuit qui réalise la soustraction (le NOT inverse les bits). Ensuite, pour la multiplication on utlisera deux nouveaux circuits de base : le registre à décalage et le compteur. Pour la division c'est un peu plus compliqué mais se ramène néanmoins à des circuits composés de quelques transistors.
L'avantage de cette arithmétique binaire c'est qu'elle s'exécute très rapidement.