SysLog1 07 ArithmétiqueBinaire
SysLog1 07 ArithmétiqueBinaire
SysLog1 07 ArithmétiqueBinaire
ARITHMETIQUE BINAIRE
7.1 Introduction
Les quatre opérations élémentaires de l’arithmétique sont : l’addition, la soustraction, la
multiplication et la division. On peut ajouter à ces quatre opérations les opérations de comparaison de
deux nombres réalisées par un comparateur. Le principe appliqué pour ces opérations en décimal sera
le même en binaire (et dans n’importe quelle autre base de numération). De plus étant donné qu’en
binaire on ne manipule que deux chiffres, les opérations sont plus simples.
L’addition, la soustraction et la comparaison relèvent de la logique combinatoire ; par contre,
la multiplication et la division relèvent de la logique séquentielle.
7.2 L’addition
7.2.1 Principe
Ce principe est décrit ci-après par les deux mots à 4 bits A et B dont la somme à 5 bits est .
La colonne des bits de poids 1 ne tient compte d’aucun report ; elle réalise une opération
portant sur 2 bits (A1 plus B1) : cette opération s’appelle demi-addition.
Les autres colonnes tiennent compte du report de rang inférieur ; elle réalisent chacune une
opération portant sur 3 bits (An plus Bn plus Cn-1 avec n allant de 2 à 4) : l’opération s’appelle addition
complète.
L’exemple peut être schématisé par le diagramme fonctionnel de la figure 7.1 ci-dessous.
L’étage de droite qui réalise la demi-addition est appelé demi-additionneur et les autres étages qui
réalisent des additions complètes sont appelés des additionneurs complets.
7.2.2 Le demi-additionneur
A1 B1 C1 1 1 A1 .B1 A1 .B1
0 0 0 0 1 A1 B1
0 1 0 1 C1 A1 .B1
1 0 0 1
1 1 1 0 b) Symbole non normalisé
a) Logigramme
Ai Bi Ci-1 Ci i
0 0 0 0 0
0 0 1 0 1
0 1 0 0 1
0 1 1 1 0
1 0 0 0 1 a) Logigramme b) Symbole
1 0 1 1 0
1 1 0 1 0 Figure 7.3 : Additionneur complet 1 bit
1 1 1 1 1
n ( An Bn ) C n1
Figure 7.4 : structure d’un additionneur à 4 bits à entrées parallèles et reports anticipés
Les circuits intégrés TTL 7483 et 74283 sont des additionneurs à 4 bits à entrées parallèles et
reports anticipés. La figure 7.5 donne les brochages respectifs, le symbole et la table de fonction des
deux circuits intégrés. Ils ne diffèrent que par leurs brochages.
Figure 7.6 : Implantation d’un additionneur à 8 bits à l’aide de l’additionneur à 4 bits 7483 ou 74283
7.3.1 Principe
Le principe général de la soustraction peut être illustré par l’opération à 4 bits [A–B = D]. On
en déduit le diagramme fonctionnel de la figure 7.8.
Ei désigne l’emprunt (à deux bits) de rang i et Ci son report (à un bit). L’étage de droite qui ne
tient compte d’aucun report est appelé demi-soustracteur ; les autres étages sont appelés des
soustracteurs complets.
A1 B1 C1 D1 D1 A1.B1 A1.B1
0 0 0 0
D1 A1 B1
0 1 0 1
1 0 0 1 C1 A1 .B1
1 1 1 0
Figure 7.9 : Logigramme du demi soustracteur
Ai Bi Ci-1 Ci Di
0 0 0 0 0 Di ( Ai Bi ) Ci 1
0 0 1 0 1
0 1 0 0 1 Ci Ai .Bi ( Ai Bi ).Ci 1
0 1 1 1 0
1 0 0 0 1
1 0 1 1 0
1 1 0 1 0
Figure 7.10 : Soustracteur complet à 1 bit
1 1 1 1 1
La valeur absolue est en binaire naturel pour tous les nombres, aussi bien positifs que
négatifs : on parlera de représentation en valeur absolue vraie signée (en anglais « signed-
magnitude »). Les circuits arithmétiques basés sur cette méthode sont extrêmement complexes : ce
sont des processeurs spécialisés. Cette méthode est réservée pour l’arithmétique à virgule flottante.
On appelle complément à 1 d’un nombre binaire A à n bits son complément bit à bit noté A (le
complément de chaque bit de A).
(A)2 A plus 1 .
On peut aussi définir (A)2 comme étant le nombre qu’il faut ajouter à A pour que la somme
soit égale au premier nombre ayant n plus 1 bits.
Exemple :
Soit à trouver les compléments à 2 des nombres A et B sur n = 8 bits avec A = (59)10 et B = (28)10.
Solution :
(A)2 11000101
(B) 2 111000100
NOTA : On aura remarquer qu’on peut obtenir directement le complément à deux d’un nombre en
conservant les bits les moins significatifs jusqu’au premier 1 rencontré et en inversant les
autres bits.
Avec cette méthode, il n’existe plus de « -0 ». Les circuits arithmétiques sont cependant plus
complexes que ceux basés sur la méthode du complément à 1, mais demeurent quand même plus
simples que dans le cas du binaire naturel.
Le code de représentation universellement adopté pour l’arithmétique à virgule fixe est le code
complément à 2.
Valeurs Bits
Bits de valeur absolue
décimales de signe
127 0 1 1 1 1 1 1 1 < ==== Nombre le plus grand
59 0 0 1 1 1 0 1 1
28 0 0 0 1 1 1 0 0
1 0 0 0 0 0 0 0 1
0 0 0 0 0 0 0 0 0
-1 1 1 1 1 1 1 1 1
-28 1 1 1 0 0 1 0 0
-59 1 1 0 0 0 1 0 1
-127 1 0 0 0 0 0 0 1
-128 1 0 0 0 0 0 0 0 < ==== Nombre le plus petit
Le nombre de bits le plus élevé pour les valeurs absolues étant 6, on doit les écrire avec au
moins 7 bits. En choisissant le minimum de 7 bits pour les valeurs absolues, les nombres seront écrits
avec 8 caractères signes inclus d’où : A 00111011 et B 00011100 .
On obtient les quatre additions suivantes :
Ce sont les nombres réels F tels que : 1,0 F 1,0 . Le codage utilisé pour la
représentation de ces nombres est le même que celui vu au chapitre 1, mais en faisant les
considérations suivantes :
- on utilise un nombre N donné de bits en code complément à 2,
- le N ième bit (le bit de poids fort) est le bit de signe,
- la position de la virgule, implicite, est fixe et située entre le N ième bit et le (N-1)ième bit ;
L’expression permettant de convertir une fraction binaire signée en fraction décimale est
donnée par la formule suivante :
La figure 7.12 donne un exemple de codage à 3 bits et la figure 7.13 donne la représentation
en registre pour le cas général à N bits.
Un nombre mixte est un nombre possédant une partie entière incluant le bit de signe et
une partie fractionnaire ; la virgule fixe est située entre les deux parties. On désigne le format
des nombres mixtes à virgule fixe par la notation « [I-Q] » : I est le nombre de bits de la partie
entière, signe inclus, et Q est le nombre de bits de la partie fractionnaire ; par exemple, pour
un nombre fractionnaire pur à 24 bits, le format est [1-23] (on dit encore « Q23 »).
(M )10 2I 1. bI 1 2I 2. bI 2 ... 20. b0 21. b1 ... 2Q. bQ
La figure 7.14 donne à titre d’exemple simple le codage des nombres pour [I-Q] = [2-2] et la
figure 7.15 donne la représentation en registre pour le cas général.
La précision de codage d’un nombre à virgule fixe dépend du nombre de bits Q de la partie
fractionnaire et est de 2-Q : par exemple, pour les formats [1-2] de l’exemple figure 7.12 et [2-2] de
l’exemple figure 7.14, elle est de 0,25 ; pour un format Q23, elle est de 2 –23 et pour un format [9-47]
elle est de 2 –47.
Pour manipuler en décimal les très grands et les très petit nombres, on utilise la notation dite
scientifique, dans laquelle un nombre réel R possède le format R M 10 E : M, appelé mantisse est
un nombre signé à virgule fixe, et E, appelé exposant, est un entier signé. E représente le nombre de
décalages nécessaires pour amener la virgule dans la position donnant la version à virgule fixe de R.
Une valeur positive de E peut spécifier des nombres très grands ; E négatif peut spécifier des nombres
extrêmement petits. C’est cette notation scientifique qui est appelée à virgule flottante : en effet, il n’y
a plus de position fixe pour la virgule fractionnaire des nombres.
C’est le même principe qui est utilisé en binaire, la base 10 étant remplacée par la base 2.
a) Généralité
Les constructeurs de processeurs à virgule flottante ont souvent utilisé leurs propres formats,
incompatibles d’un constructeur à un autre. Cependant, en 1985, une représentation standard
sponsorisée par « Institute of Electrical and Electronics Engineers » (IEEE) et dénommée norme
IEEE-754/854 vit le jour. Beaucoup de constructeurs ont adopté cette norme.
Les deux formats principalement rencontrés sur les PC sont les formats 32 bits (simple
précision) et 64 bits (double précision). La partie fractionnaire de la mantisse possède 23 bits en
simple précision et 52 bits en double précision ; l’exposant possède 8 bits en simple précision et 11
bits en double ; le dernier bit (le plus à gauche) est réservé au signe de la mantisse qui est à la fois le
signe du nombre complet. La figure 7.16 donne la représentation d’un format 32 bits à virgule
flottante.
Normalement l’exposant est un entier signé E dont la plage s’étend de Emin à Emax en passant
par zéro. Pour avoir un exposant toujours positif, on ajoute un décalage appelé biais à la valeur signée
de E et on obtient un exposant biaisé e = E + biais ; l’exposant E est alors appelé exposant non biaisé.
Le biais est la plus grande valeur absolue possible de E ; par exemple, pour un exposant à 8 bits, la
valeur absolue est sur 7 bits : le biais est 127. Le tableau suivant donne pour le format 32 bits les
valeurs extrêmes de E et de e.
Non biaisé E Emin = – (27 – 1 )= –127 0 Emax = +27 = 127 Eov = 128
NOTA : avec la représentation en valeur absolue vraie signée, par exemple sur 8 bits, le nombre
binaire 10000000 désigne -0 ; cependant, si on admet que 0 est positif, alors 10000000 peut
servir à désigner 128 (le bit du signe + devenant implicite) qui sera considéré comme valeur
de dépassement de capacité ; c’est ce que prend en compte la dernière colonne du tableau.
Pour éviter cela, la norme IEEE-754/854 prévoit la normalisation suivante : le chiffre le plus
significatif non nul de la mantisse doit être immédiatement suivi par la virgule flottante. L’exemple
décimal précédent normalisé donne : 543,21 5,4321 10 2 .
En binaire, comme le chiffre le plus significatif non nul est le bit 1, la mantisse d’un nombre
normalisé sera toujours de la forme 1,f (f étant la partie fractionnaire de la mantisse). La norme IEEE-
754/854 prévoit de ne pas inclure explicitement ce bit 1 dans la représentation de la mantisse, ce qui
permet d’augmenter en mémoire le nombre de bits de la mantisse ; on parle de « bit caché ».
La mantisse MN des nombres normalisés est dans la plage MNmin MN MNmax ; si nous
prenons le cas 32 bits, :
Si l’exposant non biaisé E est dans la plage Emin + 1 E Emax , la valeur réelle d’un nombre à
virgule flottante et normalisé peut être obtenue par l’expression :
L’expression précédente ne peut pas servir à exprimer le nombre zéro à virgule flottante. Par
ailleurs l’amplitude non nulle la plus petite que permet cette expression est 2(Emin + 1),
(soit 2–126 en
format 32 bits). Le standard IEEE-754/854 permet cependant de représenter des nombres de plus
faibles amplitudes en utilisant une mantisse sous la forme 0,f. ; ces nombres sont dits « dénormalisés ».
Le zéro à virgule flottante sera représenté comme un nombre dénormalisé. La mantisse MD des
nombres dénormalisés est dans la plage MDmin MD MDmax ; si nous prenons le cas 32 bits, et que
nous désignons par MD1 l’amplitude de la plus petite mantisse non nulle, on a :
Nous prenons seulement le cas du format 32 bits (les résultats pouvant être facilement
transposés au format 64 bits). La plage de l’exposant biaisé e est : 0 e 255 . Les valeurs extrêmes
0 et 255 de e sont réservées à des nombres particuliers par la norme. Les catégories de nombres
représentables sont les suivants :
- L’exposant biaisé e tel que 1 e 254 est réservé aux nombres normalisés ;
- L’exposant biaisé e = 255 est réservé aux nombres résultant de certains types de
saturation (ou dépassement de capacité « overflow ») et aux nombres indéfinis résultant de
certaines opérations invalides (comme par exemple zéro multiplié par l’infini) ; les
nombres indéfinis sont dénommés par la norme NaN («Not a Number »).
La table ci-dessous résume le codage des différents types de nombre flottant en format 32 bits :
NOTA : 2-126 et (2-2-23).2127 sont respectivement la plus petite valeur absolue et la plus grande valeur absolue
qu’on peut représenter en simple précision.
C A.B
D A.B
E A.B A.B
b) Condition A > B
Cette condition est vraie si et seulement si :
- A3 > B3, les autres bits indifférents,
- ou A3 = B3 et A2 > B2, les autres bits indifférents
- ou A3 = B3 et A2 = B2 et A1 > B1, les autres bits indifférents
- ou A3 = B3 et A2 = B2 et A1 = B1 et A0 > B0, les autres bits indifférents
Cela se traduit par l’expression :
C A3 .B3 E3 . A2 .B2 E3 .E2 . A1.B1 E3 .E2 .E1. A0 .B0
la relation D E C , ce qui s’avère être plus économique (on peut aussi obtenir C en fonction de E et
D). Cependant, les comparateurs commerciaux en circuits intégrés n’utilisent pas cette forme
simplifiée car l’implantation correspondante introduit un temps de propagation supplémentaire
(équivalent soit à un inverseur plus une porte ET, soit à une porte NOR).
D A3 .B3 E3 . A2 .B2 E3 .E2 . A1.B1 E3 .E2 .E1 . A0 .B0 E3 .E2 .E1 .E0 .DI
E E3 .E2 .E1.E0 .E I
Lorsqu’on n’utilise pas les entrées de mise en cascade, CI et DI doivent être à l’état bas et EI à
l’état haut.
La figure 7.15 donne la table de vérité et le symbole du circuit 7485. La figure 7.16 donne
l’exemple d’un comparateur 12 bits avec des 7485. Dans le cas de mots très longs, afin de réduire le
temps de comparaison, on utilise la méthode présentée à la figure 7.17 illustrant l’exemple d’un
comparateur 24 bits avec des comparateur 4 bits. A titre d’exemple, le temps de comparaison de la
version 74LS85 est de 24 ns ; avec ce circuit intégré, le temps de comparaison du comparateur 12 bits
de la figure 7.16 est de 72 ns alors que celui du comparateur 24 bits de la figure 7.17 est de 48 ns.
Il existe plusieurs comparateurs à 8 bits en circuits intégrés. On peut citer en exemple les
circuits TTL 74LS682 à 74LS689. Aucun de ces circuits ne possède l’ensemble des trois fonctions de
comparaison.
- les circuits 74LS682 à 687 possèdent les sorties P Q et P Q tandis que les circuits 688 et 689
- les circuits 74LS682, 84, 86 et 88 possèdent les sorties en Totem-Pole, tandis que les autres sont à
collecteur ouvert.