Chapitre 3 : Arithmétique binaire
Les diverses opérations arithmétiques qui interviennent dans les ordinateurs et les calculatrices
portent sur des nombres exprimés en notation binaire. En tant que telle, l'arithmétique numérique
peut être un sujet très complexe, particulièrement si on veut comprendre toutes les méthodes de
calcul et la théorie sur laquelle elle s'appuie. Heureusement, il n'est pas nécessaire d'enseigner aux
ingénieurs la théorie complète de l'arithmétique numérique, tout au moins pas avant qu'ils soient
devenus des programmeurs expérimentés.
Dans ce chapitre, nous allons concentrer nos efforts sur les principes de base qui nous
permettent de comprendre comment les machines numériques (c'est-à-dire les ordinateurs)
réalisent les opérations arithmétiques de base. Nous traiterons uniquement la représentation des
nombres entiers, celle des nombres fractionnaires sera étudiée ultérieurement.
D'abord nous verrons comment effectuer manuellement les opérations arithmétiques en
binaire, par la suite nous étudierons les circuits logiques réels qui matérialisent quelques-unes de
ces opérations dans un système numérique.
3-1 Représentation des nombres entiers positifs
Les ordinateurs travaillent en base 2. Nous devrons donc représenter nos nombres
décimaux en binaire. Nous utiliserons pour les nombres entiers positifs leur représentation
équivalente en binaire. Les machines ayant des dimensions physiques finies, un nombre
de bits (variables logiques) maximum sera admissible en fonction de la machine, ce qui
nous limitera dans la grandeur des nombres.
Dans le cas d’une représentation sur 8 bits, nous pouvons représenter 256 valeurs
soit les nombre de 0 à 255.
Dans le cas général d’une représentation sur N bits, nous avons :
• nombre de valeurs 2N
• de 0 à 2N-1
3-2 Addition Binaire
L'addition de deux nombres binaires est parfaitement analogue à l'addition de deux
nombres décimaux. En fait, l'addition binaire est plus simple puisqu'il y a moins de cas à
apprendre. Revoyons d'abord l'addition décimale:
376
+ 461
= 837
On commence par additionner les chiffres du rang de poids faible, ce qui donne 7.
Les chiffres du deuxième rang sont ensuite additionnés, ce qui donne une somme de 13,
soit 3 plus un report de 1 sur le troisième rang. Pour le troisième rang, la somme des deux
chiffres plus le report de 1 donne 8.
Les mêmes règles s'appliquent à l'addition binaire. Cependant, il n'y a que quatre cas,
qui peuvent survenir lorsqu'on additionne deux chiffres binaires et cela quel que soit le
rang. Ces quatre cas sont:
0+0 = 0
0+1 = 1
1+0 = 1
1+1 =10 = 0 + report de 1 sur le rang de gauche
1+1+1= 11= 1 + report de 1 sur le rang de gauche
Le dernier cas ne se produit que lorsque, pour un certain rang, on additionne deux 1
plus un report de 1 provenant du rang de droite. Voici quelques exemples d'additions de
deux nombres binaires:
011 ( 1001 11,011
+ 110 ( + 1111 +10,110
= 1001 ( = 11000 = 110,001
Il n'est pas nécessaire d'étudier des additions ayant plus de deux nombres binaires, parce que
dans tous les systèmes numériques les circuits qui additionnent ne traitent pas plus de deux
nombres à la fois. Lorsque nous avons plus de deux nombres à additionner, on trouve la somme
des deux premiers puis on additionne cette somme au troisième nombre, et ainsi de suite. Ce n'est
pas véritablement un inconvénient, puisque les machines numériques modernes peuvent
généralement réaliser une opération d'addition en quelques nanosecondes.
L'addition est l'opération arithmétique la plus importante dans les systèmes numériques. Les
opérations de soustraction, de multiplication et de division effectuées par les ordinateurs ne sont
essentiellement que des variantes de l'opération d'addition.
3-3 Représentation des nombres entiers signés
Nous devons définir une convention pour représenter le signe en binaire. La plupart des
ordinateurs traitent aussi bien les nombres négatifs que les nombres positifs.
La première solution consiste à ajouter un bit au nombre. Celui-ci est appelé bit de signe. La
convention la plus simple consiste à attribuer au signe positif l’état 0 et au signe négatif l’état 1.
Nous appelons cette convention comme étant une représentation signe-grandeur. Nous pouvons
voir un exemple de cette représentation à la figure 3- 1.
On utilise le bit de signe pour indiquer si le nombre binaire mémorisé est positif ou négatif.
Les nombres reproduits à la Figure 3 sont formés d'un signe de bit et de six bits de grandeur. Ces
derniers correspondent à l'équivalent binaire exact de la valeur décimale présentée.
A6 A5 A4 A3 A2 A1 A0
0 1 1 0 1 0 0 = +5210
Bit de signe Grandeur = 5210
A6 A5 A4 A3 A2 A1 A0
1 1 1 0 1 0 0 = -5210
Bit de signe Grandeur = 5210
Figure 3- 1 : Représentation de nombres binaires signés dans la notation signe-grandeur.
Bien que la notation signe-grandeur soit directe, les ordinateurs et les calculatrices
n'y ont généralement pas recours, en raison de la complexité pour réaliser des opérations
arithmétiques avec cette notation. On utilise plutôt dans ces machines, pour représenter
les nombres binaires signés, la notation en complément à 2. Avant d'aborder le
déroulement de tout ceci, il importe de voir comment on obtient l'équivalent en
complément à 1 et l'équivalent en complément à deux, d'un nombre binaire.
3-3.1 Notation en complément à 1
Le complément à 1 d'un nombre binaire s'obtient en changeant chaque 0 par un 1 et
chaque 1 par un 0. Autrement dit, en complémentant chaque bit du nombre. Voici une
illustration de cette marche à suivre:
1 0 1 1 0 1 nombre binaire initial
0 1 0 0 1 0 complément de chaque bit pour obtenir le complément à 1
On dit que le complément à 1 de 101101 est 010010.
Le complément à 1 d’un nombre est donc l’inversion de chaque bit à l’aide de la
fonction logique NON. Nous pouvons donc exprimer le complément à 1 par l’équation
ci-dessous.
Complément à 1 de N : C1(N) = not N (1)
3-3.2 Notation en complément à 2
Le complément à 2 est très largement utilisé car c'est la représentation naturelle des
nombres négatifs. Si nous faisons la soustraction de 2 - 3 nous obtenons immédiatement -
1 représenté en complément à 2.
0010 nombre 2 en binaire sur 4 bits
0011
- nombre 3 en binaire sur 4 bits
= 1 résultat de la soustraction, il y a un emprunt
1111
Nous allons voir que "1111" est la représentation du nombre -1 sur 4 bits.
Le complément à 2 d'un nombre binaire s'obtient simplement en prenant le complément à 1 de
ce nombre et en ajoutant 1 au bit de son rang de poids le plus faible. Voici une illustration de cette
conversion pour le cas 1011012 = 4510.
101101 équivalent binaire de 45
010010 inversion de chaque bit pour obtenir le complément à 1
1 + addition de 1 pour obtenir le complément à 2
010011 = le complément à 2 du nombre binaire initial
On dit que 010011 est le complément à 2 de 101101.
Le complément à 2 d’un nombre est donc l’inversion de chaque bit à l’aide de la fonction
logique NON, puis l’addition de 1. Nous pouvons donc exprimer le complément à 2 par l’équation
ci-dessous.
Complément à 2 de N : C2(N) = C1(N) + 1 = not N + 1 (2)
Trouvons la valeur du nombre -1 sur 4 bits. Nous commençons par exprimer le nombre 1 sur 4
bits puis nous appliquons la règle de calcul du complément à 2.
3-3.3 Étude de nombres binaires signés en complément à 2
Voici comment on écrit des nombres binaires signés en utilisant la notation en complément à
2.
Si le nombre est positif, sa grandeur est la grandeur binaire exacte et son bit de signe est un 0
devant le bit de poids le plus fort. C'est ce qu'on peut voir sur la figure 3- 2 pour +4510
0 1 0 1 1 0 1 = +4510
Bit de signe Grandeur exacte
1 0 1 0 0 1 1 = -4510
Bit de signe Complément à 2
Figure 3- 2 : Écriture de nombres binaires signés dans la notation en complément à 2.
Si le nombre est négatif, sa grandeur est le complément à 2 de la grandeur exacte et
son bit de signe est un 1 à gauche du bit de poids le plus fort. Voyez à la figure 3- 2 la
représentation du nombre -4510.
La complémentation à 2 d'un nombre signé transforme un nombre positif en un
nombre négatif et vice versa.
La notation en complément à 2 est employée pour exprimer les nombres binaires
signés parce que, comme nous le verrons, on parvient grâce à elle à soustraire en effectuant
en réalité une addition. Cela n'est pas négligeable dans le cas des ordinateurs, puisque avec
les mêmes circuits, nous parvenons à soustraire et à additionner.
Dans de nombreuses situations, le nombre de bits est fixé par la longueur des
registres qui contiennent les nombres binaires, d'où la nécessité d'ajouter des 0 pour avoir
le nombre de bits requis:
Comme exemple nous allons exprimer +2 au moyen de 5 bits:
2= 00010
11101 (complément à 1)
+ 1 (ajouter 1)
11110 (complément à 2 du chiffre +2 sur 5 bits)
3-3.4 Cas spécial de la notation en complément à 2
Quand un nombre signé a 1 comme bit de signe et que des 0 comme bits de grandeur,
son équivalent décimal est -2N-1, où N est le nombre de bits de la représentation signée.
Par exemple:
1000 = -24-1 = -23 = -8
10000 = -25-1 = -24 = -16
100000 = -26-1 = -25 = -32
et ainsi de suite.
Nous pouvons analyser en détails une représentation en complément à 2 sur 8 bits.
La valeur négative la plus grande est :
10000000 = -28-1 = -27 = -128
La valeur positive la plus grande est :
01111111 = |10000000| - 1 = |-27 | -1 = 127
Nous serions tentés de conclure que le nombre total de valeurs exprimées est de 255
valeurs (-128 à + 127). C’est sans compter le nombre 0 exprimé par "00000000". Nous
avons donc bien 256 valeurs différentes possibles. Par conséquent, on peut affirmer que
l'intervalle complet des valeurs que l'on peut écrire en complément à 2 au moyen de N
bits :
Il y a un total de 2N+1 valeurs différentes, en comptant le zéro. Dans le cas
général d’une représentation sur N bits, nous avons :
• nombre de valeurs différentes 2N
• représentation du zéro : 00000000
• valeur négative 10000000 = -128
• valeur positive 01111111 = +127
D’où la plage de variation des nombres entiers signés avec une représentation en complément
à 2 sur N bits :
-2N-1 à + (2N-1-1)
3-4 Addition en complément à 2
La notation en complément à 2 et la notation en complément à 1 sont très semblables.
Toutefois, la notation en complément à 2 jouit généralement de certains avantages quand vient le
temps de construire des circuits. Nous allons maintenant étudier comment les machines
numériques additionnent et soustraient quand les nombres négatifs sont écrits dans la notation en
complément à 2. Dans tous les cas étudiés, il est important que vous remarquiez que le bit de signe
de chaque nombre est traité sur le même pied que les bits de la partie grandeur.
3-4.1 Cas 1: deux nombres positifs
L'addition de deux nombres positifs est immédiate. Soit l'addition de +9 et +4:
(Cumulande) + 9 0 1001
(Cumulateur) +4 0 0100
(Somme)
+ 13 0 1101
Bit de signe
Remarquez que les bits de signe du cumulande (arithmétique, nombre placé en haut d’une
opération d’addition) et du cumulateur (nombre placé en bas d’une opération d’addition) sont 0 et
que celui de la somme est aussi 0, ce qui indique un nombre positif. Notez aussi qu'on a fait en
sorte que le cumulande et le cumulateur aient le même nombre de bits. Il faut toujours s'assurer de
cela dans la notation en complément à 2.
3-4.2 Cas 2: nombre positif et nombre négatif plus petit
Soit l'addition de +9 et de -4. Rappelez-vous que -4 est exprimé dans la notation en
complément à 2. Donc +4 (00100) doit être converti en -4 (11100)
+9 0 1001 (cumulande)
-4 1 1100 (cumulateur)
+5 1 0 0101
Bit de signe
Dans ce cas-ci, le bit de signe du cumulateur est 1. Remarquez que les bits de signe
sont aussi additionnés. En fait, un report est produit au moment de l'addition du dernier
rang. Ce report est toujours rejeté d'où la somme finale de 00101, soit le nombre décimal
+5.
3-4.3 Cas 3: nombre positif et nombre négatif plus grand.
Soit l'addition de -9 et de +4:
(-9) 10111
+(4) 00100
-(-5) 11011
Bit de signe
Dans ce cas-ci le bit de signe de la somme est 1, ce qui indique un nombre négatif.
Comme la somme est un nombre négatif, la réponse est le complément à 2 de la grandeur
exacte. Donc 1011 est en réalité le complément à 2 de la somme. Pour trouver la grandeur
exacte de la somme, on doit prendre le complément à 2 de 1011, ce qui donne 0101 (5);
la réponse est donc 11011 = -5.
On peut également vérifier le résultat en additionnant le poids de chaque bit, avec le
bit de signe qui vaut -2N, où N est le nombre de bits de grandeur.
-1·24 + 1·23 +0·22 +1·21 +1·20 = -16 + 8 + 2 + 1 = -5
3-4.4 Cas 4: deux nombres négatifs
- - 9 10111
- - 4 11100
-13 110011
Ce report n’est pas pris en considération
Le résultat définitif est de nouveau négatif (-13).
3-4.5 Cas 5: nombres égaux et opposés
- +9 10111
+ - 9 01001
0 100000
Ce report n’est pas pris en considération
Le résultat est évidemment +0, comme on s'y attendait.
3-5 Soustraction: complément à 2
Une opération de soustraction qui porte sur des nombres exprimés dans la notation
en complément à 2 est en réalité une opération d'addition qui diffère peu des cas
examinés précédemment. Quand on soustrait un nombre binaire (le diminuteur, nombre
en bas de la soustraction) d'un autre nombre (le diminuande, nombre en haut de la
soustraction), la marche à suivre est comme suit:
a. Prendre le complément à 2 du diminuteur, y compris son bit de
signe. Si ce dernier est un nombre positif, il deviendra un nombre négatif dans la notation en
complément à 2. Si le diminuteur est un nombre négatif, la complémentation à 2 en fera un nombre
positif écrit en grandeur exacte. Autrement dit, nous changeons le signe du diminuteur.
b. Après avoir complémenté à 2 le diminuteur, on l'additionne au
diminuande. Le diminuande conserve sa forme initiale. Le résultat de cette addition représente la
différence recherchée. Le bit de signe de la différence indique si la réponse est positive ou négative
et si on est en notation binaire exacte ou en notation en complément à 2.
c. Rappelez-vous que les deux nombres doivent avoir le même
nombre de bits.
Examinons la soustraction suivante: +9 - (+4).
Diminuande (+ 9) 01001
Diminuteur (+ 4) 00100
Changez le diminuteur pour sa version en complément à 2 (11100), ce qui représente 4.
Maintenant additionnez-le au diminuande.
+9 01001
-4 11100
+5 100101
La retenue est rejetée, le résultat est donc 00101 = +5
Quand on complémente à 2 le diminuteur, on obtient en réalité -4, de sorte qu'on additionne
+9 à -4, ce qui est équivalent à soustraire de +9 le nombre +4. En définitive, toute opération de
soustraction se résume à une addition lorsqu'on utilise la notation en complément à 2. Cette
caractéristique de la notation en complément à 2 explique pourquoi c'est la méthode la plus utilisée,
puisqu'on peut additionner et soustraire en utilisant les mêmes circuits.
3-5.1 Dépassement (overflow)
Dans chacun des exemples d'addition et de soustraction que l'on vient d'étudier, les nombres
que l'on a additionnés étaient constitués à la fois d'un bit de signe et de 4 bits de grandeur. Les
réponses aussi comportaient un bit de signe et 4 bits de grandeur. Tout report fait sur le bit de
sixième rang était rejeté. Dans tous les cas étudiés, la grandeur de la réponse ne dépassait jamais la
capacité des 4 bits. Voyons l'addition de +9 à +8.
+9 0 1001
+8 0 1000
1 0001
Bit de signe
Le bit de signe de la réponse est celui d'un nombre négatif, ce qui est manifestement
une erreur. La réponse devrait être +17. Étant donné que la grandeur est 17, il faut plus de
4 bits pour l'exprimer, et il y a donc un dépassement (overflow) sur le rang du bit de signe.
Une condition de dépassement donne toujours lieu à un résultat inexact, et on la détecte
en examinant le bit de signe du résultat et en le comparant aux bits de signe des nombres
additionnés. En additionnant deux nombres de signes différents, il ne peut pas y avoir de
dépassement, par contre lorsqu'on additionne deux nombres de même signe, on a un
dépassement si le signe du résultat est différent du signe des deux nombres additionnés.
Dans un ordinateur, il existe un circuit spécialement conçu pour détecter les conditions
de débordement et pour indiquer que la réponse est fausse.
3-5.2 Multiplication de nombres binaires
On multiplie les nombres binaires de la même façon qu'on multiplie les nombres
décimaux. En réalité, le processus est plus simple car les chiffres du multiplicateur sont
toujours 0 ou 1, de sorte qu'on multiplie toujours par 0 ou par 1. Voici un exemple de
multiplication de nombres binaires non signés.
Dans cet exemple, le multiplicande et le multiplicateur sont en notation binaire exacte et il
n'y’a pas de bit de signe. La marche à suivre est exactement la même que pour les multiplications
décimales. D'abord, examinons le bit de poids le plus faible du multiplicateur; dans notre exemple
il s'agit d'un 1. Ce 1 multiplie le multiplicande pour donner 1001, c'est notre premier produit partiel.
Ensuite, examinons le deuxième bit du multiplicateur. Il s'agit d'un 1, ce qui donne le second produit
partiel. Notez qu'en écrivant le second produit partiel on le décale d'un rang vers la gauche par
rapport au premier. Le troisième bit du multiplicateur est 0 et notre troisième produit partiel est
0000; ce troisième produit est aussi décalé d'un rang vers la gauche par rapport au produit partiel
précédent. Le quatrième bit du multiplicateur est 1, de sorte que le dernier produit partiel est
1001, que l'on écrit à nouveau décalé d'un rang vers la gauche. On additionne ensuite les quatre
produits partiels pour obtenir le produit final.
La plupart des machines numériques ne peuvent additionner que deux nombres binaires à la
fois. C'est la raison pour laquelle les produits partiels d'une multiplication ne peuvent être
additionnés ensemble en une seule fois. Ils sont plutôt additionnés deux par deux, c'est-à-dire que
le premier est additionné au second, que leur somme est additionnée au troisième et ainsi de suite.
3-5.3 Multiplication en complément à 2
Dans les machines qui utilisent la notation en complément à 2, la multiplication est effectuée
de la façon décrite ci-dessus quand le multiplicande et le multiplicateur sont exprimés en notation
binaire exacte. Si les deux nombres multiplier sont positifs, ils sont déjà dans cette notation et ils
sont multipliés tels quels. Le produit résultant est évidemment positif et son bit de signe est 0.
Quand les deux nombres sont négatifs, ils sont donc écrits dans la notation en complément à 2.
Chacun de ces nombres est complémenté à 2 pour obtenir un nombre positif et ce sont les résultats
de ces complémentations qu'on multiplie. Le produit est un nombre positif dont le bit de signe est
0.
Quand un des nombres est positif et que l'autre est négatif, le nombre négatif est d'abord
complémenté à 2 pour obtenir une grandeur positive. Le produit est exprimé selon la notation en
grandeur exacte. Cependant, le produit doit être négatif car les nombres à multiplier sont de signes
opposés. Par conséquent, on complémente à 2 le produit et on ajoute le bit de signe 1.
3-6 Division binaire
La division d'un nombre binaire (le dividende) par un autre (le diviseur) est identique à la
division de deux nombres décimaux. En réalité, la division en binaire est plus simple puisque pour
déterminer combien de fois le diviseur entre dans le dividende, il n'y a que 2 possibilités 0 ou 1.
Voici deux exemples de divisions:
Dans la plupart des ordinateurs modernes, les soustractions qui ont lieu durant une
opération de division sont généralement des soustractions avec complément à 2, c'est-à-
dire on complémente à 2 le soustracteur puis on effectue l'addition.
La division de nombres signés s'effectue de la même façon que la multiplication. Les
nombres négatifs sont complémentés pour obtenir des nombres positifs puis la division est
effectuée. Si le dividende et le diviseur sont de signes opposés, le quotient est
complémenté à 2 pour obtenir un nombre négatif, puis on lui ajoute un bit de signe de 1.
Si le dividende et le diviseur ont le même signe, le quotient est laissé sous sa forme
positive et on lui ajoute un bit de signe de 0.
3-7 Addition en BCD
De nombreux ordinateurs représentent les nombres décimaux au moyen du code BCD.
Rappelons que ce code fait correspondre à chaque chiffre décimal un code de 4 bits
compris entre 0000 et 1001. L'addition de nombres décimaux exprimés sous forme BCD
se comprend mieux en étudiant deux cas qui peuvent survenir quand on additionne deux
chiffres décimaux.
3-7.1 Somme égale ou inférieure à 9
Additionnons 5 à 4 en utilisant pour chacun leur représentation BCD
L'addition est effectuée comme une addition binaire normale et la somme est 1001,
soit le code BCD de 9. Voici un autre exemple: additionnons 45 à 33.
Dans cet exemple. Les codes de 4 bits associés à 5 et à 3 sont additionnés selon les règles
binaires pour donner 1000, ce qui est le code BCD de 8. De même, l'addition des chiffres décimaux
de second rang donne en binaire 0 111, ce qui est le code BCD de 7. Le total est 0111 1000, soit
le code BCD de 78.
Dans les exemples précédents, aucune somme de deux chiffres décimaux ne dépassait 9; donc,
il n'y a pas eu de reports décimaux. Dans cette situation l'addition BCD est un processus direct
équivalent à l'addition binaire.
3-7.2 Somme supérieure à 9
Additionnons 6 et 7 en BCD:
La somme 1101 n'existe pas dans le code BCD; il s'agit de l'une des six représentations codées
de 4 bits interdites ou non valides. Cette représentation est apparue parce qu'on a additionné deux
chiffres dont la somme dépasse 9. Dans un tel cas, il faut corriger la somme en additionnant 6 (0110)
afin de prendre en considération le fait qu'on saute six présentations codées non valides:
Comme on le montre ci-dessus, l'addition de 0110 à la somme non valide donne la
représentation BCD exacte. Notez qu'un report a lieu sur le chiffre décimal de deuxième rang. Il
est obligatoire d'additionner 0110 quand la somme de deux chiffres décimaux dépasse 9.
Voyons un autre exemple: additionnez 47 à 35 en BCD:
L'addition des codes de 4 bits pour 7 et 5 produit une somme non valide que l'on
corrige en additionnant 0110. Notez que ceci produit un report de 1, qui est ajouté à la
somme BCD des chiffres du second rang.
Récapitulation de l'addition en BCD:
a. Addition binaire ordinaire des représentations BCD de tous les
rangs.
b. Pour les rangs où la somme est égale ou inférieure à 9, aucune
correction ne s'impose et la somme est une représentation BCD valide.
c. Quand la somme des deux chiffres est supérieure à 9, on ajoute
une correction de 0110 pour obtenir la représentation BCD exacte. Il se produit toujours
un report sur le chiffre de rang immédiatement à gauche, soit lors de l'addition initiale
(première étape) ou de l'addition de la correction.