edubun
Français

Comment les portes additionnent des nombres

Une porte XOR et une porte AND suffisent pour additionner deux bits. Enchaîne quatre additionneurs complets et tu peux additionner deux nombres quelconques de 0 à 15.

Essaie avant de lire la suite. Additionne 0101 et 0011 sur papier, en binaire, comme tu additionnes en décimal, et écris chaque retenue au-dessus de la colonne suivante. Tu n'as besoin que de trois faits : 0 + 0 = 0, 0 + 1 = 1 et 1 + 1 = 10, ce qui veut dire qu'on écrit 0 et qu'on retient 1. Avec une retenue qui arrive, 1 + 1 + 1 = 11 : tu écris 1 et tu retiens 1. Le calcul se trouve dans le paragraphe suivant, alors cache-le d'abord.

Voici le calcul. Colonne de droite : 1 + 1 = 10, on écrit 0, on retient 1. Suivante : 0 + 1 plus la retenue donne encore 10, on écrit 0, on retient 1. Suivante : 1 + 0 plus la retenue, 10, on écrit 0, on retient 1. Colonne de gauche : 0 + 0 plus la retenue donne 1. Le résultat est 1000, c'est-à-dire 8, et 5 + 3 = 8. Trois des quatre colonnes ont produit une retenue. Une calculatrice, un jeu et un tableur finissent tous par faire exactement cela. Dans un processeur, chaque colonne est traitée par quelques portes, et la scène démarre sur la même somme. Essaie ensuite 9 + 8. Il faut un cinquième bit.

Chargement

Fais glisser pour tourner. Fais défiler ou pince pour zoomer.

A = 0101 (5) et B = 0011 (3). Les retenues se propagent depuis la droite sur trois rangs et la somme vaut 1000 (8). Touche n'importe quel bit de A ou de B, ou choisis un nombre dans les menus. Essaie 9 + 8 : le résultat 17 demande un cinquième bit, la retenue qui sort à gauche.

La colonne de droite n'a besoin que de deux portes

Regarde la colonne de droite toute seule. Le bit de résultat, la somme, vaut 1 quand exactement une entrée vaut 1. C'est la règle de XOR. La retenue vaut 1 seulement quand les deux entrées valent 1. C'est la règle de AND. Une porte XOR et une porte AND côte à côte, alimentées par les deux mêmes entrées, additionnent donc deux bits. Ce petit circuit est un demi-additionneur. Il n'est qu'un « demi » parce qu'il n'a aucun moyen de recevoir la retenue de la colonne à sa droite.

Les autres colonnes ont trois bits à additionner

Dans toutes les autres colonnes, trois bits se rencontrent : un de chaque nombre et la retenue venue de la droite. Un additionneur complet prend les trois. Sa somme vaut A XOR B XOR retenue entrante, soit 1 quand un nombre impair des trois vaut 1. Sa retenue sortante vaut 1 quand au moins deux d'entre eux valent 1. Deux demi-additionneurs et une porte OR forment un additionneur complet. Aligne quatre additionneurs complets, relie la retenue sortante de chacun à la retenue entrante de son voisin de gauche, et tu obtiens un additionneur 4 bits. Chaque retenue doit se propager de droite à gauche avant que la dernière colonne se stabilise : ce montage s'appelle un additionneur à propagation de retenue. Les vrais processeurs additionnent des nombres de 64 bits avec des circuits plus astucieux qui calculent les retenues à l'avance, mais la règle de chaque colonne reste la même.

ABRetenue entranteSommeRetenue sortante
00000
01010
11001
10101
11111

Quand le résultat est trop grand

Quatre bits contiennent de 0 à 15. Additionne 9 et 8 : le vrai résultat, 17, s'écrit 10001 en binaire, soit cinq bits. Un registre qui ne garde que quatre bits stocke 0001, c'est-à-dire 1, et la retenue restée à gauche est le signal d'alerte. C'est un dépassement de capacité. 15 + 1 sur quatre bits laisse 0000. Les processeurs lèvent un indicateur quand cela arrive, pour que les programmes puissent s'en apercevoir. La soustraction réutilise le même additionneur. Pour calculer A − B, le processeur inverse tous les bits de B et ajoute 1, ce qui donne le complément à deux de B, puis l'additionne à A et abandonne la retenue en trop. Pour 5 − 3 sur quatre bits : 3 s'écrit 0011, inversé 1100, plus 1 donne 1101. Ensuite 0101 + 1101 = 10010, et en gardant quatre bits il reste 0010, c'est-à-dire 2.

Multiplier, c'est décaler et additionner

La multiplication utilise les mêmes pièces. En binaire, multiplier par 2 décale tous les bits d'un rang vers la gauche, comme multiplier par 10 ajoute un zéro en décimal : 0011 (3) devient 0110 (6). Pour 5 × 3, remarque que 3 = 2 + 1. Donc 5 × 3 = 5 × 2 + 5 × 1 = 1010 + 0101 = 1111, soit 15. Un circuit multiplieur décale et additionne de cette façon, en prenant un par un les bits à 1 du second nombre.

Erreurs fréquentes
  • « 1 + 1 = 2, donc le résultat tient sur un bit. » Un bit ne contient que 0 ou 1. 1 + 1 = 10 : le bit de somme vaut 0 et on retient 1. Si l'on oublie la retenue, le résultat devient 0, ce qui est faux.
  • « Un demi-additionneur peut additionner des nombres de n'importe quelle longueur. » Un demi-additionneur n'a pas d'entrée pour la retenue venue de la droite, il ne fonctionne donc que dans la colonne de droite. Toutes les autres colonnes demandent un additionneur complet à trois entrées. Un additionneur 4 bits pourrait utiliser un demi-additionneur et trois additionneurs complets.
  • « Un dépassement de capacité arrête l'ordinateur avec une erreur. » L'additionneur garde simplement les bits pour lesquels il a de la place. 9 + 8 sur quatre bits donne 0001, un résultat faux qui a l'air parfaitement normal. Le processeur lève un indicateur, et c'est au programme de le vérifier.
  • « La soustraction a besoin de son propre circuit soustracteur. » Inverse les bits de B, ajoute 1 et additionne le résultat à A avec le même additionneur. 5 − 3 : 0101 + 1101 = 10010, et les quatre bits de poids faible, 0010, valent 2.
Note du professeurDonnez la somme 0101 + 0011 avant de prononcer le mot « additionneur », et faites écrire les retenues au-dessus des colonnes. La plupart des tables du demi-additionneur et de l'additionneur complet se lisent alors directement dans leur propre calcul. Le passage du demi-additionneur à l'additionneur complet est le moment où ils se perdent. Montrez la deuxième colonne de leur somme et demandez combien de bits ils y ont additionnés : trois. La propagation de retenue se joue facilement avec quatre personnes en rang qui se passent une carte « retenue » vers la gauche. Le complément à deux demande un exemple lent à la main ; la scène ne sait pas soustraire, alors faites 5 − 3 au tableau et vérifiez que 0010 vaut 2.
  1. Combien fait 1 + 1 en binaire ?
  2. Dans un demi-additionneur, quelle porte donne le bit de somme ?
    • XOR
    • AND
    • OR
    • NOT
  3. Dans un demi-additionneur, quelle porte donne la retenue ?
    • AND
    • XOR
    • OR
    • NAND
  4. Combien de bits d'entrée reçoit un additionneur complet ?
  5. Un additionneur complet reçoit A = 1, B = 1, retenue entrante = 1. Quel est son bit de somme ?
  6. Additionne 0110 et 0011. Donne quatre bits.
  7. Un registre 4 bits calcule 9 + 8 et ne garde que quatre bits. Quel nombre contient-il ?
  8. Quel est le complément à deux sur 4 bits de 0011 ?
  9. Combien d'additionneurs complets faut-il pour un additionneur à propagation de retenue de nombres de 8 bits ?
  10. Quelle est la plus grande somme possible de deux nombres de 4 bits ?
L'essentiel
  • Demi-additionneur : somme = A XOR B, retenue = A AND B.
  • Additionneur complet : trois entrées ; la somme vaut 1 pour un nombre impair de 1, la retenue pour deux ou plus.
  • Des additionneurs complets enchaînés forment un additionneur à propagation de retenue ; les retenues vont de droite à gauche.
  • Dépassement de capacité : le résultat demande plus de bits que le registre n'en a. La soustraction additionne le complément à deux.
Sources de ce cours (9)
  • (checked 2026-10-17; reordered 2026-10-19: standards first, then official documentation, then the teaching model and calculations, history sources last)
  • Standards: NIST, "Prefixes for binary multiples" (physics.nist.gov/cuu/Units/binary.html: IEC approved kibi, mebi, gibi in December 1998; 1 B = 8 bit; 1 MiB = 1 048 576 B; 1 MB = 1 000 000 B; 1 GiB = 1 073 741 824 B; historical note: memory makers usually mean 2²⁰ bytes by megabyte, storage makers 1 000 000, and the "1.44 MB" diskette uses a megabyte of 1 024 000 bytes)
  • IETF RFC 20 "ASCII format for Network Interchange" (1969, 7-bit codes, A = 65, a = 97, 0 = 48)
  • IETF RFC 3629 "UTF-8, a transformation format of ISO 10646" (2003: 1 to 4 octets per character, ASCII unchanged, code points up to U+10FFFF, U+0800 to U+FFFF take three octets, "the first octet of a multi-octet sequence indicates the number of octets", example U+D55C U+AD6D U+C5B4 = ED 95 9C EA B5 AD EC 96 B4)
  • Official documentation: MDN Web Docs, "<color>" (hexadecimal colour notation #RRGGBB)
  • Intel, "Intel Chips" timeline poster (2012: Intel 4004 of 1971 with 2,300 transistors; 2nd generation Core 2010 with 1.16 billion)
  • Claude E. Shannon, "A Symbolic Analysis of Relay and Switching Circuits", Transactions of the AIEE vol. 57 (1938)
  • abstract of his MIT master's thesis. Computer History Museum, The Silicon Engine, "1947: Invention of the Point-Contact Transistor" (Bardeen and Brattain, December 1947, germanium)
  • John von Neumann, "First Draft of a Report on the EDVAC" (30 June 1945, Moore School, reprinted in IEEE Annals of the History of Computing 15:4, 1993).

Consulté le: 2026-10-17