Des portes logiques à l'addition

Le demi-additionneur et l'additionneur complet

Additionner deux bits

Comment un circuit fait-il une addition ? Commençons par le cas le plus simple : additionner deux bits A et B. Le résultat tient sur deux chiffres, une somme S et une retenue C (carry). En binaire : 0+0=00, 0+1=01, 1+0=01, 1+1=10. En regardant ces cas, on remarque que la somme S est exactement le XOR de A et B, et la retenue C est exactement le ET de A et B.

Le demi-additionneur

Demi-additionneur (half adder) :

   A ---+----[ XOR ]---- S   (somme = A XOR B)
        |   /
   B ---+--/
        |  \
        +---[ ET ]----- C   (retenue = A ET B)

verification :  1 + 1 -> S = (1 XOR 1) = 0,  C = (1 ET 1) = 1  -> resultat binaire 10 (= 2)

Ce circuit s'appelle un demi-additionneur, car il lui manque une chose : il ne sait pas tenir compte d'une retenue entrante, venue de l'addition du bit précédent.

L'additionneur complet

Pour additionner des nombres de plusieurs bits, chaque étage doit accepter trois entrées : A, B, et la retenue entrante C_in. C'est l'additionneur complet (full adder). On l'obtient en assemblant deux demi-additionneurs et une porte OU.

Additionneur complet, colonne par colonne (addition de 1011 + 0110) :

  retenue : 1 1 1 0
            1 0 1 1
          + 0 1 1 0
          ---------
          1 0 0 0 1     (chaque colonne : A + B + retenue entrante)

(chaque colonne produit un bit de somme et une retenue vers la colonne de gauche)

En chaînant n additionneurs complets, la retenue de sortie de chacun alimentant la retenue d'entrée du suivant, on additionne des nombres de n bits.

Piège classique

Avec un demi-additionneur seul, on ne peut additionner qu'à la toute première colonne (celle de droite), où il n'y a pas encore de retenue entrante. Toutes les colonnes suivantes exigent un additionneur complet : oublier la retenue entrante est l'erreur classique qui donne un résultat faux dès qu'une retenue apparaît.