Les montages de ce parcours se font en très basse tension, avec le 5 V d'une carte Arduino ou des piles. Les installations citées en exemple (pompe, chambre froide, gâche, feux, bus) sont aussi reliées au secteur ou à des batteries de puissance : toute intervention sur ces parties revient à un électricien habilité, et ce parcours ne qualifie pas pour la faire.
Additionner en binaire, représenter un nombre négatif en complément à deux et détecter un débordement.
La leçon, diapositive par diapositive
Diapositive 1 sur 8
Objectif de la leçon
Additionner deux nombres binaires
Coder un nombre négatif
Soustraire avec un additionneur
Repérer un débordement
Voix off
Un distributeur ajoute une pièce au crédit, un thermostat retire un degré à sa consigne, un boîtier compte les passagers qui montent et ceux qui descendent. Une puce passe son temps à calculer, et elle doit aussi manier des nombres négatifs. Tu vas d'abord additionner en binaire, puis représenter les nombres négatifs avec le complément à deux, la méthode de presque tous les processeurs. Elle a une propriété très pratique : elle permet de soustraire avec le circuit qui additionne. Une fois la leçon terminée, tu sauras aussi reconnaître un débordement, l'erreur qui survient quand le résultat ne tient plus dans le nombre de bits prévu.
Diapositive 2 sur 8
L'addition binaire
0 + 0 = 0 ; 0 + 1 = 1
1 + 1 = 10 : on pose 0, on retient 1
1 + 1 + 1 = 11 : on pose 1, on retient 1
On avance de droite à gauche
Voix off
L'addition binaire se pose comme l'addition que tu as apprise à l'école, colonne par colonne, de droite à gauche. Il n'y a que quatre cas. Zéro plus zéro donne zéro. Zéro plus un donne un. Un plus un donne deux, qui s'écrit 10 en binaire : tu poses 0 et tu retiens 1. Et quand il y a déjà une retenue, un plus un plus un donne trois, soit 11 : tu poses 1 et tu retiens 1. C'est tout. Ces quatre règles, câblées avec quelques portes, forment l'additionneur que tu construiras dans le module 3.
Diapositive 3 sur 8
Un exemple posé
0101 1011 (91)
+ 0011 0110 (54)
= 1001 0001 (145)
Vérifie toujours en décimal
Voix off
Additionnons 91 et 54 sur huit bits. 91 s'écrit 0101 1011, et 54 s'écrit 0011 0110. Colonne de droite : un plus zéro, un. Deuxième colonne : un plus un, on pose zéro et on retient un. La retenue se propage ensuite sur plusieurs colonnes. Au bout du compte, tu obtiens 1001 0001. En additionnant les poids, 128 plus 16 plus 1, tu trouves 145, qui est bien 91 plus 54. Prends l'habitude de vérifier chaque calcul binaire en décimal : c'est rapide, et ça t'évite de propager une erreur dans tout un circuit.
Diapositive 4 sur 8
Coder un nombre négatif
Idée simple : un bit de signe, mais deux zéros
Complément à deux : le bit de poids fort pèse négatif
Sur 8 bits : de -128 à +127
1111 1111 vaut -1
Voix off
Comment écrire moins 18 avec des 0 et des 1 ? L'idée la plus simple serait de réserver un bit pour le signe. Mais elle pose des problèmes : il y aurait un zéro positif et un zéro négatif, et l'addition ne marcherait plus directement. Les circuits utilisent donc le complément à deux. Sur huit bits, le bit de poids fort ne vaut plus 128 mais moins 128. Les autres gardent leurs poids habituels. 1111 1111 vaut donc moins 128 plus 127, soit moins 1. On code ainsi de moins 128 à plus 127, et un nombre est négatif quand son bit de poids fort vaut 1.
Diapositive 5 sur 8
Trouver l'opposé
Écris le nombre positif sur n bits
Inverse tous les bits
Ajoute 1
18 = 0001 0010, donc -18 = 1110 1110
Voix off
Pour obtenir l'opposé d'un nombre en complément à deux, il y a une recette en deux temps. Tu inverses tous les bits, puis tu ajoutes 1. Prenons 18, qui s'écrit 0001 0010 sur huit bits. En inversant, tu obtiens 1110 1101. En ajoutant un, tu obtiens 1110 1110 : c'est moins 18. Vérifie avec les poids : moins 128, plus 64, 32, 8, 4 et 2, ça fait bien moins 18. Remarque que le même octet, lu comme un nombre sans signe, vaudrait 238. Le circuit ne sait pas lequel des deux tu veux : c'est le programme qui décide comment lire.
Diapositive 6 sur 8
Soustraire en additionnant
A - B = A + (opposé de B)
45 - 18 : 0010 1101 + 1110 1110
Résultat : 0001 1011 = 27
La neuvième retenue est ignorée
Voix off
Le grand avantage du complément à deux, c'est qu'une soustraction devient une addition. Pour calculer 45 moins 18, tu additionnes 45 et l'opposé de 18. 45 s'écrit 0010 1101, et moins 18 s'écrit 1110 1110. En posant l'addition, tu obtiens un résultat de neuf bits, avec un 1 qui sort à gauche. Sur huit bits, cette retenue finale est simplement ignorée. Il reste 0001 1011, soit 27. C'est le bon résultat. Un processeur n'a donc besoin que d'un additionneur et de quelques inverseurs pour additionner et soustraire, ce qui économise beaucoup de portes.
Diapositive 7 sur 8
Le débordement
Le vrai résultat sort de la plage -128 à +127
100 + 50 sur 8 bits signés donne 1001 0110, lu -106
Deux nombres de même signe, un résultat de signe opposé
Les processeurs ont un indicateur de débordement
Voix off
Attention au débordement. Sur huit bits signés, le plus grand nombre est 127. Si tu additionnes 100 et 50, le vrai résultat, 150, ne tient pas. Le circuit donne 1001 0110, qui se lit moins 106 en complément à deux. Le calcul est faux, et rien ne le signale à l'œil nu. La règle pour le repérer est simple : quand deux nombres de même signe donnent un résultat de signe opposé, il y a débordement. Les processeurs ont un indicateur prévu pour cela. Dans tes circuits, choisis assez de bits pour que ce cas n'arrive jamais en fonctionnement normal.
Diapositive 8 sur 8
À retenir
Addition : retenue dès que la somme dépasse 1
Opposé : inverser les bits, ajouter 1
Soustraire, c'est ajouter l'opposé
Même signe en entrée, signe contraire en sortie : débordement
Voix off
Retiens ces quatre points. L'addition binaire se pose colonne par colonne, avec une retenue dès que la somme dépasse un. En complément à deux, l'opposé d'un nombre s'obtient en inversant ses bits et en ajoutant un. La soustraction devient alors une simple addition, ce qui simplifie beaucoup les circuits. Le débordement se repère au signe : deux nombres de même signe ne peuvent pas donner un résultat de signe contraire. Enfin, un octet n'a pas de sens en soi : 1110 1110 vaut 238 ou moins 18 selon la façon dont le programme le lit.
À retenir
L'addition binaire suit les mêmes règles que l'addition décimale, avec une retenue dès que la somme dépasse 1.
En complément à deux, on obtient l'opposé d'un nombre en inversant tous ses bits puis en ajoutant 1.
Sur n bits signés, on code de moins 2 puissance n-1 à 2 puissance n-1 moins 1 ; au-delà, il y a débordement.
Fais les exercices, le quiz et obtiens ton certificat dans ton espace
Avec ton compte, les deux premiers modules sont offerts : leçons, labs, simulations, quiz et tuteur. Débloque la suite du parcours pour 100 000 GNF. Le certificat vérifiable, délivré à la fin, coûte 399 000 GNF.
Indépendance. Ce parcours est indépendant des fabricants de circuits intégrés et de cartes cités (Texas Instruments, Microchip, NXP, Arduino) et des auteurs des simulateurs utilisés (Logisim-evolution et Digital, logiciels libres) : il n'est affilié à aucun d'eux et le Certificat Elprofessor n'est délivré au nom d'aucun d'eux.