1
Page 1
Arithmétique binaire
Copyright © 2004 Epum/Lirmm1
Ecole Polytechnique Universitaire de MontpellierUniversité Montpellier II
Place Eugène Bataillon, 34095 Montpellier cedex 05, FRANCE
Laboratoire d'Informatique, de Robotique et de Microélectronique de MontpellierUMR 5506 Université Montpellier II / CNRS
161 rue Ada, 34392 Montpellier cedex 05, FRANCE
Notion de code
Soit I un ensemble fini ou infini d'éléments et C un ensemble fini de symboles. On appelle codage de I à l'aide des éléments de C une application injective de I dans C* ou C* est l'ensemble des suites ordonnées de 1, 2, ..., m, ... symboles.
I1
βα
C
C*
bn éléments
Ib éléments
Copyright © 2004 Epum/Lirmm2
Si toutes les informations sont représentées à l'aide d'une suite de n symboles de C (codage en longueur fixe), et si C contient b symboles, on peut représenter bn informations différentes.
I1I2I3I4
x1x2…xn
bn élémentsxi ∈{α,β, …}
Représentation des nombres
Dans les systèmes de numération on attribue en général une significationà la position des symboles. Considérons, par exemple, un nombre quis'exprime dans un système de numération de base b par:
(A)b = a5 a4 a3 a2 a1 a0
Chaque chiffre ai peut prendre une valeur entière comprise entre 0 et (b-1).Cette représentation symbolique représente en fait le nombre positif:
Copyright © 2004 Epum/Lirmm3
A = a5b5 + a4b4 + a3b3 + a2b2 + a1b1 + a0b0
A = Σ ai.bi
Les nombres exprimés dans la base 2 ou « nombres binaires » ont un intérêttous particulier pour les calculateurs électroniques du fait qu'ils ne font intervenirque deux valeurs (0,1).
i=0
n-1
Représentation des nombres rationnels (Virgule fixe)
(A)b = a3 a2 a1 a0 , a-1 a-2
A = a3b3 + a2b2 + a1b1 + a0b0 + a-1b-1 + a-2b-2
Copyright © 2004 Epum/Lirmm4
Conversion de bases
Méthode polynomiale :- Exprimer le nombre (N)b1 en polynôme avec dans le polynôme desnombres exprimés dans la base b2,- Evaluer le polynôme en utilisant l'arithmétique de la base b2.
Exemple : Soit un nombre binaire (1011101).
Copyright © 2004 Epum/Lirmm5
Expression polynomiale:A = 1*26 + 0*25 + 1*24 + 1*23 + 1*22 + 0*21 + 1*20
(A)10 = 1*64 + 0*32 + 1*16 + 1*8 + 1*4 + 0*2 + 1*1= 93
(A)8 = 1*100 + 0*40 + 1*20 + 1*10 + 1*4 + 0*2 + 1*1= 135
(A)3 = 1*2101 + 0*1012 + 1*121 + 1*22 + 1*11 + 0*2 + 1*1= 10110
Conversion de bases
Exemple : Soit un nombre binaire (1011,101).Expression polynomiale:
A = 1*23 + 0*22 + 1*21 + 1*20 + 1*2-1 + 0*2-2 + 1*2-3
(A)10 = 1*8 + 0*4 + 1*2 + 1*1 + 1*1/2 + 0*1/4 + 1*1/8= 11 + 5/8= 11 625
Copyright © 2004 Epum/Lirmm6
= 11,625(A)8 = 1*10 + 0*4 + 1*2 + 1*1 + 1*1/2 + 0*1/4 + 1*1/10
= 13 + 5/10= 13,5
(A)3 = 1*22 + 0*11 + 1*2 + 1*1 + 1*1/2 + 0*1/11 + 1*1/22= 102 + 12/22 = 102,121212 ...
2
Page 2
Conversion de bases
Méthode itérative :Soit A la représentation d'un nombre entier positif dans la base 10 Pour
Le passage d'une base quelconque à la base décimale par la méthode algorithmique est simple l'inverse l'étant moins. Une solution pour réaliser ce passage (base 10 à base quelconque) est d'appliquer une méthode itérative.
base b1 => expression décimale (base 10) => base b2
Copyright © 2004 Epum/Lirmm7
Soit A la représentation d un nombre entier positif dans la base 10. Pourobtenir sa représentation dans la base b quelconque il suffit de diviser Apar b, puis le quotient par b, jusqu'à ce que le quotient devienne nul. Lesrestes successifs lu de bas en haut sont la représentation de A dans labase b.
A = a3b3 + a2b2 + a1b1 + a0= b(a3b2 + a2b1 + a1) + a0 = bQ1 + a0
Q1 = b(a3b1 + a2b0) + a1 = bQ2 + a1Q2 = ba3 + a2 = bQ3 + a2Q3 = a3
Conversion de bases
Exemple :29 en base 2 29 en base 8
29 = (14*2) + 1 29 = (3*8) + 514 = (7*2) + 0 3 = (0*8) + 3
Copyright © 2004 Epum/Lirmm8
7 = (3*2) + 1 3 = (1*2) + 1 (29)10 = (35)81 = (0*2) + 1
(29)10 = (11101)2
Conversion de bases
Cas particulier de la base 2 :La conversion du système décimal au système binaire peut s'effectueren remarquant que le reste de la division est 0 ou 1 selon que ledividende est pair ou impair.La conversion décimale binaire peut donc être représentée plussimplement en écrivant les quotients de droite à gauche; on écrit “ 1 ”sous chaque quotient impair et “ 0 ” sous chaque quotient pair.
Copyright © 2004 Epum/Lirmm9
sous chaque quotient impair et 0 sous chaque quotient pair.
Exemple : Conversion de (29)10 en binaire1 3 7 14 291 1 1 0 1 => (29)10 = (11101)2
Conversion de bases
Relations entre la base 2 et la base 8.Les bits sont pris 3 par 3 et exprimés en décimal pour obtenir le
Compte tenu de la facilité de conversion entre les base 2, 8 et 16 (puissances de 2), les bases 8 (octal) et 16 (hexadécimal) sont exploitées pour représenter les nombres binaires sous forme plus synthétique.
Copyright © 2004 Epum/Lirmm10
Les bits sont pris 3 par 3 et exprimés en décimal pour obtenir lenombre octal.Relations entre la base 2 et la base 16.Les bits sont pris 4 par 4 et exprimés en hexadécimal pour obtenir le nombre hexadécimal.
Exemple : N2 = 11101=> N8 = 35 (011 101)=> N16 = 1D (0001 1101)
Représentation des nombres négatifs
22 21 20 N 0 0 0 0 0 0 1 1 0 1 0 2
Signe + Valeur absolue
Copyright © 2004 Epum/Lirmm11
0 1 0 2 0 1 1 3 1 0 0 -0 1 0 1 -1 1 1 0 -2 1 1 1 -3
Complément à b-1
Définition: Le complément à la base - 1 d'un nombre exprimé dans une base b est le résultat de la soustraction de ce nombre du radical -1:
Si N est un nombre exprimé sur n digits, Cb-1(N) = bn- N - 1
Représentation des nombres négatifs
Copyright © 2004 Epum/Lirmm12
• C9(5230) = 10000-5230-1 = 9999-5230 = 4769 • C1 (1010) = 10000-1010-1 = 1111-1010 = 0101
Le complément à b-1 d'un nombre peut être obtenu encomplémentant à la base -1 chaque digits.
• C9(5230) = 4769 • C1(1010) = 0101
3
Page 3
Complément à b-1
Représentation des nombres négatifs
22 21 20 N 0 0 0 0 0 0 1 1 0 1 0 2
Copyright © 2004 Epum/Lirmm13
0 1 1 3 1 0 0 -3 1 0 1 -2 1 1 0 -1 1 1 1 -0
Complément à b
Définition: Le complément à la base (b) d'un nombre exprimédans une base b est le résultat de la soustraction de ce nombredu radical:
Si N est un nombre exprimé sur n digits, Cb(N) = bn- N
Représentation des nombres négatifs
Copyright © 2004 Epum/Lirmm14
• C10(5230) = 10000-5230 = 4770 • C2 (1010) = 10000-1010 = 0110
Le complément à b d'un nombre peut être obtenu en passantpar le complément à b-1 : Cb(N) = Cb-1(N) + 1
• C10(5230) = 4769 + 1 = 4770• C2(1010) = 0101 + 1 = 0110
Le complément à b d'un nombre peut être obtenu par unalgorithme de scrutation/complémentation
Complément à b
Représentation des nombres négatifs
22 21 20 N 0 0 0 0 0 0 1 1 0 1 0 2
Copyright © 2004 Epum/Lirmm15
0 1 0 2 0 1 1 3 1 0 0 -4 1 0 1 -3 1 1 0 -2 1 1 1 -1
A = - an-1.bn-1 + Σ ai.bii=0
n-2
Complément à b
le complément à b d'un nombre peut être obtenu par unalgorithme de scrutation/complémentation
- Scruter le nombre à partir de la droite
T t l di it t é t à 0 l
Représentation des nombres négatifs
Copyright © 2004 Epum/Lirmm16
- Tant que les digits rencontrés sont à 0, les conserver
- Complémenter à b le premier digit non nul
- Complémenter à b-1 tous les digits suivants
C10(5230) = 4770C2(1010) = 0110
0 1 264 ?
Complexité
Copyright © 2004 Epum/Lirmm17
264 = 1.8 10191.8 1019
106 * 3600 * 24 * 365= 584 942 années
Synthèse : Algorithme / Structure
E0
En
S0...
Sn
.
.
.
Copyright © 2004 Epum/Lirmm18
Table de vérité => Impossible
=> Parallélisation
=> Récurrence
=> Algorithme
=> Structure itérative
4
Page 4
A
X
YS si A=0 alors S=X
si A=1 alors S=Y
B Bn
0
1
Multiplexeurs
0
1
A
S
X
Y
Copyright © 2004 Epum/Lirmm19
000001010011100101110111
0011
1
10
0
AXY S
B2 B2
2n
8=
0 0 11
0 1 1 0
00 01 11 10
0
1
AXYS
S = AX+AY
S
A
X
Y
A
X
YS
m
m0
1
Y0 X0 Y1 X1 Ym Xm
Multiplexeurs
m
Copyright © 2004 Epum/Lirmm20
S0
A
Y0 X0
A A
Y1 X1 Ym Xm
S1 Sm
................................
....................................................
.......................................
A
X
YS
S = AX+AY
A
XY S
S = ABX+ABY+ABZ+ABT
ZT
B A0..An
E0
En
S...
S = ΣA0 A1 An E
0
1
00011011
00...0
11...1
Multiplexeurs
Copyright © 2004 Epum/Lirmm21
S = AX+AY S = ABX+ABY+ABZ+ABT S = ΣA0.A1..An.E(A0..An)2
.......................
E0 En
A0..An. A0..An.
A0A1A2
Récurrence - Décodeur de Gray
a3a2a1a0
000000010010001101000101
b3b2b1b0
000000010011001001100111
cd
ab 00 01 11 10
00
01
11
Copyright © 2004 Epum/Lirmm22
01010110011110001001101010111100110111101111
01110101010011001101111111101010101110011000
b0 = a0 ⊕ a1b1 = a1 ⊕ a2b2 = a2 ⊕ a3b3 = a3
10
Algorithme - Complément à 2
Le complément à 2 d'un nombre peut être obtenudirectement en suivant la procédure suivante:
- Scruter le nombre à partir de la droite- Tant que les bits rencontrés sont à 0, les conserver- Conserver le premier 1- Inverser tous les bits suivants
N = 1010 C2(N) = 0110
S = C2(A)
A=A3 A2 A1A0
S= S3 S2 S1S0
Copyright © 2004 Epum/Lirmm23
S0 = A0S1 = A0’.A1 + A0.A1’
A0 ⊕ A1S2 = (A0+A1)’.A2 + (A0+A1).A2’
(A0+A1) ⊕ A2S3 = (A0+A1+A2) ⊕ A3...
N 1010 C2(N) 0110
i=1
n-1Sn = Σ Ai ⊕ An
Fe =1 si A =B et A =B et A =B et A =B
Fe =1 si A=B
A=A3 A2 A1A0 B=B3 B2 B1 B0
Fe
Algorithme - Comparateur égalité
Copyright © 2004 Epum/Lirmm24
Fe =1 si A3=B3 et A2=B2 et A1=B1 et A0=B0
00011011
1001
AiBi fifi = AiBi+AiBi
fi = Ai ⊕ BiFe= (A3 ⊕ B3) (A2 ⊕ B2) (A1 ⊕ B1) (A0 ⊕ B0)
5
Page 5
Fs =1 si (A >B ) ou (A =B et A >B ) ou (A =B et A =B et A >B )
Fs =1 si A>B
A=A3 A2 A1A0 B=B3 B2 B1 B0
Fs
Algorithme - Comparateur supériorité
Copyright © 2004 Epum/Lirmm25
Fs =1 si (A3>B3) ou (A3=B3 et A2>B2) ou (A3=B3 et A2=B2 et A1>B1)ou (A3=B3 et A2=B2 et A1=B1 et A0>B0)
00011011
0010
AiBi gigi = AiBi
Fs =(A3B3)+(A3⊕B3 )(A2B2)+(A3⊕B3 )(A2⊕B2 )(A1B1) + (A3⊕B3 )(A2⊕B2 )(A1⊕B1 )(A0B0)
A0A1A2A3
Structure itérative
A=A3 A2 A1A0
S= S3 S2 S1S0
Copyright © 2004 Epum/Lirmm26
A0A1A2A3
C0C1C2C3C4
S0S1S2S3
A0A1A2A3
C0=0C1C2C3C4
Structure itérative - Complément à 2
S = C2(A)
A=A3 A2 A1A0
S= S3 S2 S1S0
Copyright © 2004 Epum/Lirmm27
S0S1S2S3
Ci+1 = Ci + Ai
S i = Ai.Ci’ + Ai’. Ci= Ai ⊕ Ci
Ci+1
Ai
Ci
Si
Fe =1 si A=B
A=A3 A2 A1A0 B=B3 B2 B1 B0
Fe
A0B0A1B1A2B2A3B3
C0C1C2C3C4Fe
Structure itérative - Comparateur égalité
Copyright © 2004 Epum/Lirmm28
000 0001 1010 0011 0100 0101 0110 0111 1
Ci+1 = 1 si Ai=Bi et Ci=1AiBiCi Ci+1
Ci+1 = AiBiCi+AiBiCi= Ci(Ai ⊕ Bi)
Co=1
0 1 00
0 1 0
00 01 11 10
0
1
AiBiCi
Ci+1
0
Ci+1
Ai Bi
Ci
Structure itérative - Comparateur égalité
Ci+1 = AiBiCi+AiBiCi= Ci(Ai ⊕ Bi)
Copyright © 2004 Epum/Lirmm29
A0B0A1B1A2B2A3B3
C0=1C1C2C3C4Fe ====
A0B0A1B1A2B2A3B3
C0C1C2C3C4Fs
Fs =1 si A>B
A=A3 A2 A1A0 B=B3 B2 B1 B0
Fs
Structure itérative - Comparateur supériorité
Copyright © 2004 Epum/Lirmm30
000 0001 1010 0011 0100 1101 1110 0111 1
Ci+1 = 1 si Ai>Bi ou (Ai=Bi et Ci=1)AiBiCi Ci+1
Ci+1 = AiBi+AiCi+ BiCi
Co=0
0 1 00
1 1 1 0
00 01 11 10
0
1
AiBiCi
Ci+1
6
Page 6
Ci+1
Ai Bi
Ci
Structure itérative - Comparateur supériorité
Ci+1 = AiBi+AiCi+ BiCi
Copyright © 2004 Epum/Lirmm31
A0B0A1B1A2B2A3B3
C0=0C1C2C3C4Fs >>>>
A0B0A1B1A2B2A3B3
C0C1C2C3C4
Additionneur
S = A + B
A=A3 A2 A1A0 B=B3 B2 B1 B0
S=R S3 S2 S1S0
Copyright © 2004 Epum/Lirmm32
000 0 0001 0 1010 0 1011 1 0100 0 1101 1 0110 1 0111 1 1
Ci+1 = 1 si retenueAiBiCi Ci+1 Si
Ci+1 = AiBi + AiCi + BiCi
Co=0
0 0 01
1 1 1
00 01 11 10
0
1
AiBiCi
Ci+1
0
S0S1S2S3
Ci+1 = AiBi + Ci ( Ai ⊕ Bi)
S i = Ai ⊕ Bi ⊕ Ci
Ci+1
Ai Bi
Ci
Additionneur
Ci+1 = AiBi + AiCi + BiCi
Ci+1 = AiBi + Ci ( Ai ⊕ Bi)
S i = Ai ⊕ Bi ⊕ Ci
Copyright © 2004 Epum/Lirmm33
A0B0A1B1A2B2A3B3
C0=0C1C2C3C4
+ + + +S0S1S2S3
Si
A0A1A2A3
C0C1C2C3C4
S0S1S2S3S C
Incrémenteur
S = A + 1
A=A3 A2 A1A0
S=R S3 S2 S1S0
Copyright © 2004 Epum/Lirmm34
A0 0A1 0A2 0A3 0
C0=1C1C2C3C4 + + + +S0S1S2S3
Ci+1 = AiBi + Ci ( Ai ⊕ Bi)
S i = Ai ⊕ Bi ⊕ Ci
Ci+1 = Ai 0 + Ci ( Ai ⊕ 0)
S i = Ai ⊕ 0 ⊕ Ci
Ci+1 = Ci.Ai
S i = Ai ⊕ Ci
Ci+1
Ai
Ci
Si
Ci+1 = Ci.Ai S i = Ai ⊕ Ci
Incrémenteur
Copyright © 2004 Epum/Lirmm35
A0A1A2A3
C0=1C1C2C3C4 +1 +1 +1 +1
S0S1S2S3
Si
A0B0A1B1A2B2A3B3
C0C1C2C3C4+ + + +- - - -
Soustracteur
S = A - B
A=A3 A2 A1A0 B=B3 B2 B1 B0
S=R S3 S2 S1S0
Copyright © 2004 Epum/Lirmm36
000 0 0001 1 1010 1 1011 1 0100 0 1101 0 0110 0 0111 1 1
Ci+1 = 1 si retenueAiBiCi Ci+1 Si
Ci+1 = AiBi + AiCi+BiCi
Co=0
0 1 11
0 1 0
00 01 11 10
0
1
AiBiCi
Ci+1
0 Ci+1 = AiBi + Ci ( Ai ⊕ Bi)
S i = Ai ⊕ Bi ⊕ Ci
S0S1S2S3
7
Page 7
Ci+1
Ai Bi
Ci
Soustracteur
Ci+1 = AiBi + AiCi+BiCi
Ci+1 = AiBi + Ci ( Ai ⊕ Bi)
S i = Ai ⊕ Bi ⊕ Ci
Copyright © 2004 Epum/Lirmm37
A1B1A2B2A3B3
C2C3C4
- - -
A0B0
C0=0C1
-S0S1S2S3
si A>B alors C4=0si A<B alors C4=1
+ + + +- - - -
Si
Ci+1
Ai Bi
Ci
Ai Bi
CiCi+1
Soustracteur
Copyright © 2004 Epum/Lirmm38
Ci+1 = AiBi + Ci ( Ai ⊕ Bi)S i = Ai ⊕ Bi ⊕ Ci
Ci+1 = AiBi + Ci ( Ai ⊕ Bi)S i = Ai ⊕ Bi ⊕ Ci
AiBi
CiCi+1 -Si
AiBi
CiCi+1 +Si
+ -
A1B1A2B2A3B3
C2C3C4
- - -
A0B0
C0=0C1
-S0S1S2S3
+ - + - + - + -
Soustracteur
Copyright © 2004 Epum/Lirmm39
S0S1S2S3
C2C3C4
+ + +
A1B1A2B2A3B3 A0B0
C0=0C1
+S0S1S2S3
Relations Soustracteur / Complément à 1
C1 (C1(A) + B) = C1 (2n - 1 - A + B)
= 2n - 1 - 2n + 1 + A – B
XC1(X)2n-1
1000+ 0111= 1111
C1(X) = 2n -1-X
Copyright © 2004 Epum/Lirmm40
= A - B
C2C3C4 + + +
A1B1A2B2A3B3 A0B0
C0=0C1 +
S0S1S2S3
+ - + - + - + -
A0A1A2A3
C0C1C2C3C4
S0S1S2S3
Décrémenteur
S = A - 1
A=A3 A2 A1A0
S=R S3 S2 S1S0
Copyright © 2004 Epum/Lirmm41
0123
A0 0A1 0A2 0A3 0
C0=1C1C2C3C4 + + + +S0S1S2S3
Ci+1 = AiBi + Ci ( Ai ⊕ Bi)S i = Ai ⊕ Bi ⊕ Ci
Ci+1 = Ai 0 + Ci ( Ai ⊕ 0)S i = Ai ⊕ 0 ⊕ Ci
Ci+1 = Ci Ai S i = Ai ⊕ Ci
Ci+1
Ai
Ci
Si
Ci+1
Ai
Ci
SiS i = Ai ⊕ Ci S i = Ai ⊕ Ci
Décrémenteur
Copyright © 2004 Epum/Lirmm42
A0A1A2A3
C0=1C1C2C3C4 +1 +1 +1 +1
S0S1S2S3
Ci+1 = Ci Ai S i Ai ⊕ Ci S i Ai ⊕ Ci
Ci+1 = Ci Ai
8
Page 8
Additionneur / soustracteur
r0r1r2r3r4
a0 b0a1 b1a2 b2a3 b3
Op
Op = 0 => A + BOp = 1 => A - B
Copyright © 2004 Epum/Lirmm43
s1s2s3
++ ++
s0
Additionneur à carry anticipée
L'inconvénient de la structure précédente est le temps nécessaire à la réalisation de l'addition. Ce temps est en effet conditionné par la propagation de la retenue à travers tous les additionneurs élémentaires.
Dans un additionneur à carry anticipée on évalue en même temps la
Copyright © 2004 Epum/Lirmm44
retenue de chaque étage. Pour cela on détermine pour chaque étage les quantités Pi et Gi suivantes:
Pi= Ai ⊕ Bi (propagation d'une retenue)Gi = AiBi (génération d'une retenue)
Pi= Ai ⊕ Bi (propagation d'une retenue)Gi = AiBi (génération d'une retenue)
La retenue entrante à l'ordre i vaut 1 si :- soit l'étage i-1 a généré la retenue (Gi-1 = 1)- soit l'étage i-1 a propagé la retenue générée à l'étage i-2 (Pi-1=1 et Gi-2=1)- soit les étages i-1 et i-2 ont propagé la retenue générée à l'étage i-3 (Pi-1=Pi-2=1 et Gi-3=1)
Additionneur à carry anticipée
Copyright © 2004 Epum/Lirmm45
..........- soit tous les étages inférieurs ont propagé la retenue entrante dans l'additionneur (Pi-1=Pi-2=...=P0=C0=1).
Ci = Gi-1 + Pi-1.Gi-2 + Pi-1.Pi-2.Gi-3 +................+ Pi-1.Pi-2.Pi-3....P0.C0
C1 = G0 + P0.C0C2 = G1 + P1.G0 + P1.P0.C0C3 = G2 + P2.G1 + P2.P1.G0 + P2.P1.P0.C0C4 = G3 + P3.G2 + P3.P2.G1 + P3.P2.P1.G0 + P3.P2.P1.P0.C0
Additionneur à carry anticipée
G0P0G1P1G2P2G3P3
G.P. G.P. G.P. G.P.
a0b0a1b1a2b2a3b3
Copyright © 2004 Epum/Lirmm46
C0C4
s0s1s2s3
C3 C2 C1
C.L.U.
P3 G3 P2 G2 P1 G1P0 G0
Bloc CLU
Copyright © 2004 Epum/Lirmm47
C4 C3 C2 C1
C0
Additionneur Algébrique
Un nombre binaire signé de N bits peut se coder sur N+1 bits, le bit depoids fort servant à représenter le signe. (0 correspond à un nombrepositif, 1 à un nombre négatif.
Si la partie significative du nombre est représentée en valeur absolue,l'opération de soustraction est relativement complexe (elle nécessite laconnaissance du plus grand des deux nombres la modification de ce
Copyright © 2004 Epum/Lirmm48
connaissance du plus grand des deux nombres, la modification de cenombre au cours de la soustraction, etc...)
Un moyen d'éviter ce processus pour effectuer une soustraction est d'utiliser un codage particulier (Complément) pour représenter les nombres négatifs.
9
Page 9
Additionneur Algébrique
Sa|A| Sb|B|
AA BB
R = A + B avec A et B positifs ou négatifs
Copyright © 2004 Epum/Lirmm49
Comparateur
Additionneur / SoustracteurSigne
|R|Sr
Additionneur Algébrique
7655- 2425
= 0 5230
2425- 7655
= 9 4770
Copyright © 2004 Epum/Lirmm50
Code de – 5230 ???
C10 (94770) = 05230
Addition en complément à b
En utilisant un codage en complément à b pour les nombres négatifs, l'opération de soustraction se transforme en une simple opération d'addition binaire
A = A + bn (tronqué sur n bits)
A – B = A + bn – B
A B = A + C (B)
Copyright © 2004 Epum/Lirmm51
Le digit de retenue de l'addition doit être ignoré dans tous lescas. Le résultat de l'addition est la valeur attendue. Ce résultatpeut être positif ou négatif
Si le digit de signe du résultat vaut 0, le nombre obtenu estpositif et codé en décimal sur les digits significatifs. Si le digit designe du résultat vaut b-1, le nombre obtenu est négatif et codéen complément à b.
A – B = A + Cb(B)
Addition en complément à 2
Cas 1 : M>0 et N>0 S = M + NRésultat = M + N
Cas 2 : M>0 et N<0On effectue donc l'addition M + (2n - N).
Copyright © 2004 Epum/Lirmm52
S = (M - N) + 2n
= M - N (sur n bits)
M-N >0 => Résultat = S M-N<0 => Résultat = - (N - M)
= - (2n - M + N) sur n bits= - (2n - S) = - C2(S)
Addition en complément à 2
Cas 3 : M<0 et N<0On effectue donc l'addition (2n - M) + (2n - N).
S = (- M - N) + 2n + 2n
= - M - N (sur n bits)
Copyright © 2004 Epum/Lirmm53
Résultat = - (N + M) = - (2n + M + N) sur n bits= - (2n - S)= - C2(S)
Additionneur Algébrique
Codage Codage
Sa|A| Sb|B|
R = A + B avec A et B positifs ou négatifs
Copyright © 2004 Epum/Lirmm54
Décodage
Additionneur
Sr|R|
10
Page 10
Base 10 - Addition en complément à10
225 = 0225 = 0225 -110 = - 0110 = +9890
-------10115 Signe=0 =>R= + 115
225 0225 9775
Copyright © 2004 Epum/Lirmm55
-225 = - 0225 = 9775 +110 = +0110 = +0110
-------09885 Signe=9 =>R= - C10(885) = - 115
Base 2- Addition en complément à 2
14 = 01110 14 = 01110-13 =-01101 +(-13) = 10011
-------100001 Signe=0 =>R=(00001)2=(1)10
13 01101 13 01101
Copyright © 2004 Epum/Lirmm56
13 = 01101 13 = 01101-14 = -01110 +(-14) = 10010
-------011111 Signe=1 => R= -C2(11111)2
= -(00001)2= -(1)10
Dépassement de capacité
Remarque: Le résultat de l'opération doit être inférieure à 2N, c'est à dire qu'en valeur absolue sa représentation binaire comporte N bits au plus. Les cas qui peuvent poser problèmes sont ceux ou le signe des deux opérandes de l'addition est identique.
15 = 01111 15 = 01111
Copyright © 2004 Epum/Lirmm57
15 01111 15 01111+ 2 = + 00010 + 2 = 00010
-------10001 Signe=1 => R=-C2(10001)2
=-(01111)2=-(15)10
Overflow = S(A).S(B).S(R) + S(A).S(B).S(R)
Additionneur/Soustracteur Algébrique
A - B = A + C2 (B) = A + C1 (B) + 1
A0B0A1B1A2B2A3B3
Op = 1 <=> - , Op = 0 <=> +
Copyright © 2004 Epum/Lirmm58
OpC1C2C3C4
+ + + +S0S1S2S3
C0
Complément à b-1
Définition: Le complément à la base - 1 d'un nombre exprimé dans une base b est le résultat de la soustraction de ce nombre du radical -1:
Si N est un nombre exprimé sur n digits, Cb-1(N) = bn- N - 1
• C9(5230) = 10000-5230-1 = 9999-5230 = 4769
Copyright © 2004 Epum/Lirmm59
• C1 (1010) = 10000-1010-1 = 1111-1010 = 0101
Le complément à b-1 d'un nombre peut être obtenu encomplémentant à la base -1 chaque digits.
• C9(5230) = 4769 • C1(1010) = 0101
Addition en complément à b-1
En utilisant un codage en complément à b-1 pour les nombres négatifs, l'opération de soustraction se transforme en une simple opération d'addition binaire [A-B = A+(-B)] mais le résultat final n'est obtenu qu'après addition de la retenue au résultat partiel.
Le bit de retenue de l'addition doit être ignoré. Si ce bit vaut 0, le
Copyright © 2004 Epum/Lirmm60
grésultat de l'addition est la valeur attendue. Si ce bit est différentde 0, le résultat attendu est le résultat de l'addition plus de ce bitde retenue. Le résultat final peut être positif ou négatif.
Si le bit de signe du résultat final vaut 0, le nombre obtenu estpositif et codé en binaire naturel sur les bits significatifs. Si le bitde signe du résultat final vaut b-1, le nombre obtenu est négatifet codé en complément à b-1.
11
Page 11
Base 10 - Addition en complément à 9
225 = 0225 = 0225 -110 = - 0110 = +9889
-------10114+ 1-------0115 Si 0 >R + 115
Copyright © 2004 Epum/Lirmm61
0115 Signe=0 =>R= + 115
-225 = - 0225 = 9774 +110 = +0110 = +0110
-------09884 + 0-------9884 Signe=9 =>R= - C9(884) = - 115
Base 2 – Addition en complément à 1
14 = 01110 14 = 01110-13 =-01101 +(-13)= 10010
-------100000+ 1-------00001 Signe=0 => R=(00001)2=(1)10
Copyright © 2004 Epum/Lirmm62
00001 Signe 0 R (00001)2 (1)10
13 = 01101 13 = 01101-14 = -01110 +(-14)= 10001
-------011110+ 0-------11110 Signe=1 => R=-C1(11110)2
=-(00001)2 =-(1)10
Addition en complément à 1
Cas 1 : M>0 et N>0 S = M+N=> Résultat = M + N
Cas 2 : M>0 et N<0On effectue donc l'addition M + (2n-1-N).Si le résultat S est inférieur à 2n (bit de retenue à 0) on obtient:
S1 = M + (2n-1 - N)S2 = S1 + 0
C1(S2) 2 1 (M N 2 1)
Copyright © 2004 Epum/Lirmm63
C1(S2) = 2n-1 - (M - N + 2n-1)= N - M (Cas /M/ < /N/)
=> Résultat: R = -C1(S2) Si le résultat est supérieur à 2n (bit de retenue à 1) et si l'on ignore le bit de retenue(résultat - 2n) on obtient :
S1 = M + (2n-1 - N) - 2n= M - N - 1
S2 = S1 + 1= M - N (Cas /M/ > /N/)
=> Résultat: R = S2
Addition en complément à 1
Cas 3 : M<0 et N<0 => signe(M)=signe(N)=1=> retenue = 1
On effectue donc l'addition (2n-1-M) + (2n-1-N).Le résultat est supérieur à 2n (bit de retenue à 1).Si l'on ignore le bit de retenue (résultat - 2n) onobtient :
Copyright © 2004 Epum/Lirmm64
S1 = (2n-1 - M) + (2n-1 - N) - 2n
= - M - N + 2n - 1 -1S2 = S1 + 1
= - M - N + 2n - 1C1(S2) = 2n-1 - (- M - N + 2n-1)
= M + N=> Résultat: R = -C1(S2)
Dépassement de capacité
Remarque: Le résultat de l'opération doit être inférieure à 2N, c'est à dire qu'en valeur absolue sa représentation binaire comporte N bits au plus. Les cas qui peuvent poser problèmes sont ceux ou le signe des deux opérandes de l'addition est identique.
15 = 01111 15 = 01111
Copyright © 2004 Epum/Lirmm65
+ 2 = +00010 + 2 = 00010-------10001+ 0-------10001 Signe=1 => R=-C1(10001)2
=-(01111)2=-(15)10
Overflow = S(A).S(B).S(R) + S(A).S(B).S(R)
Multiplication par bn
i=-m
n(N)b = Σ pibi = (pn pn-1 ... p1 p0 , p-1 p-2 ... p-m)b
(p p 1 p1 p0 p 1 p k p k 1 p )b = Σ pibi+kn
Ecriture d ’un nombre n en base b :
Décalage de k positions vers la gauche :
Copyright © 2004 Epum/Lirmm66
(pn pn-1 ... p1 p0 p-1 ... p-k , p-k-1 ... p-m)b Σ pibi=-m
Σ pibi+k = bk *Σpibi = bk *(N)bi=-mi=-m
nn
Multiplication par une puissance de 2 => décalage
12
Page 12
Multiplication binaire
1 1 0 0 Multiplicande1 1 0 1 Multiplieur---------
1 1 0 0 Produit partiel0 0 0 0 Produit partiel
1 2* 1 3--------
3 61 2
Copyright © 2004 Epum/Lirmm67
0 0 0 0 Produit partiel1 1 0 0 Produit partiel
1 1 0 0 Produit partiel -------------------1 0 0 1 1 1 0 0
1 2--------1 5 6
A3 B0 A2B0 A1B0 A0B0
A3 B1 A2B1 A1B1 A0B1
P1P2P3
Multiplieur
S = A * B
A=A3 A2 A1A0 B=B3 B2 B1 B0
S=S7S6S5S4S3 S2 S1S0B3 B2 B1 B0
A3 A2 A1 A0
*
Copyright © 2004 Epum/Lirmm68
A3 B2 A2B2 A1B2 A0B2
A3 B3 A2B3 A1B3 A0B3
P3P4
P1 + P2 = R1 => R1 + P3 = R2 => R2 + P4 = S
+
Ri Ai-1Bj
Ri+1
S7 S6 S5 S4 S3 S2 S1 S0
A3 B0 A2B0 A1B0 A0B0
A3 B1 A2B1 A1B1 A0B1
A3 B2 A2B2 A1B2 A0B2
A3 B3 A2B3 A1B3 A0B3
+ + + +
B0
B1
B2
A0A1A2A3
A0A1A2A3
A0A1A2A3
0
0
Multiplieur
Copyright © 2004 Epum/Lirmm69
S7 S6 S5 S4 S3 S2 S1 S0
+ + + +
+ + + +
B2
B3A0A1A2A3
0
0
Multiplieur en Complément à 2
X = - xn-1.2n-1 + Σ xi.2ii=0
n-2
23
2
0
33
22
22
+−=
+−==
∑
∑i
i
ii
aaA
bbB
=> -X = -2n + C1(X) + 1
C2(X) = 2n - X
Copyright © 2004 Epum/Lirmm70
432
03
33
2
0
2
0
2
0
633
7
2
03
333
2
0
332
0
2
0
633
2
03
33
2
0
32
0
2
0
633
03
22'.2'.222
12)'.(2212'.2222
2)(22)(222.
22
+++++−=
⎟⎠
⎞⎜⎝
⎛++−+⎟
⎠
⎞⎜⎝
⎛++−++=
−+−++=
+=
+
=
+
=
+
= =
==
+
= =
==
+
= =
=
∑∑∑∑
∑∑∑∑
∑∑∑∑
∑
ii
i
i
ii
ji
ij
ji
ii
i
i
ii
ji
ij
ji
ii
i
i
ii
ji
ij
ji
ii
)b(a)b(ababa
ba)b(ababa
babababaBA
aaA
Multiplieur en Complément à 2
+ + + +
A0B0A1B0A2B0A3B0
A0B1A1B1A2B1A3B1
A0B2A1B2A2B2A3B2
1
0
Copyright © 2004 Epum/Lirmm71
P7 P6 P5 P4 P3 P2 P1 P0
+ + + +
+ + + +
A0B2A1B2A2B2A3B2
A0B3A1B3A2B2A3B3
0
0
Signe
Multiplieur en Complément à 2
23
33
23
33
2 26
33
2
03
32
03
32
0
2
0
633
2
0
33
2
0
33
12)'(2212'2222
2)(22)(222.
22
22
ba)(abbaba
baabbabaBAP
aaA
bbB
ii
ii
jiji
ii
i
i
ii
ji
ij
ji
i
ii
i
ii
⎟⎞
⎜⎛
++−+⎟⎞
⎜⎛
++−++=
−+−++==
+−=
+−=
+
==
+
= =
=
=
∑∑∑∑
∑∑∑∑
∑
∑
Copyright © 2004 Epum/Lirmm72
33
333
2
03
33
2
0
63
63
72
0
2
0
633
33
333
2
03
33
2
0
63
663
62
0
2
0
633
663
63
33
333
2
03
33
2
0
63
63
2
0
2
0
633
03
03
0 033
222'2'2'2'222
222'2'2'22'222
22'2or
222'2'2222
12)(22122222
ab)b(a)b(abababa
ab)b(a)b(abababaP
aa
ab)b(a)b(abababa
ba)(abbaba
ii
i
i
ii
ji
ij
ji
ii
i
i
ii
ji
ij
ji
ii
i
i
ii
ji
ij
ji
iii
ii
jj
i
++++++−+=
+++++−+−+=
−+=−
++++−−+=
⎟⎠
⎜⎝
+++⎟⎠
⎜⎝
++++
+
=
+
=
+
= =
+
=
+
=
+
= =
+
=
+
=
+
= =
=== =
∑∑∑∑
∑∑∑∑
∑∑∑∑
∑∑∑∑
13
Page 13
Multiplieur en Complément à 2
+ + +
+ + +
A0B0A1B0A2B0
0
A3B0
00A2B1 A0B1A1B1
A0B2A1B2A2B2
A3B1
Copyright © 2004 Epum/Lirmm73
P7 P6 P5 P4 P3 P2 P1 P0
+ + +
+ + + + B3
A3
A3B2
+
+
1
B3
A0B3
A3
A1B3A2B2A3B3
ignoré
Signe
1 0 1 1- 1 0 0 1---------------0 0 1 0 0
- 1 0 0 1---------------
1 ,0 0 1
1 0 0 1
1
0
Exemple : 11 / 9
Division Binaire
1 1 9
2 0 1 , 2 2 ...2 0
2
Copyright © 2004 Epum/Lirmm74
0 1 0 0 0- 1 0 0 1
----------------1 0 0 0 0
- 1 0 0 1-----------------
0 1 1 1
0
0
1
Soustraction 5 bits
QR R R R
1 0 1 1- 0 1 0 0 10
1 0- 0 1 0 0 10
1 0 1- 0 1 0 0 10
1 0 1 10 1 0 0 11
Diviseur
S = A / B
A=A3 A2 A1A0 B=B3 B2 B1 B0
S=S7S6S5S4,S3 S2 S1S0
Copyright © 2004 Epum/Lirmm75
- 0 1 0 0Q R R R R
- 0 1 0 0 110 0 1 0 0
- 0 1 0 0 100 1 0 0 0
- 0 1 0 0 101 0 0 0 0
- 0 1 0 0 110 1 1 1 0
- 0 1 0 0 11
Si R>B alors Q=1 et R-Bsinon Q=0 et R
R
+
01
+ -
R B
Si alors
Ci+1 Ci
Bo+ - + - + -
B1B2+ -
B30+ -
0
Bo+ - + - + -
B1B2+ -
B30+ -
0
Bo+ - + - + -
B1B2+ -
B30+ -
0
A3
A2
A1
A0
0 0 0 0
Q3
Q2
Q1
Diviseur
Copyright © 2004 Epum/Lirmm76
- Si
B-
R
RSi
CiCi+1+
Bo+ - + - + -
B1B2+ -
B30+ -
0
Bo+ - + - + -
B1B2+ -
B30+ -
0
Bo+ - + - + -
B1B2+ -
B30+ -
0
Bo+ - + - + -
B1B2+ -
B30+ -
0
0
0
0
Q0
Q-1
Q-2
Q-3
A0A1A2A3
C0=0C1C2C3C4
S0S1S2S3
Complément à 2 série
Ci+1
Ai
Ci
Si
Ai
Copyright © 2004 Epum/Lirmm77
Ci+1 Ci
Si
D Q
H
Ai
Ci+1Ci
Si
D Q
H
Additionneur série
A0B0A1B1A2B2A3B3
C0=0C1C2C3C4 + + + +
S0S1S2S3
Ci+1
Ai Bi
Ci
SiAi Bi
Copyright © 2004 Epum/Lirmm78
D Q
H
Ai
Ci+1Ci
Si
D Q
H
Ci+1
Ci
Si
Bi
14
Page 14
Multiplieur séquentiel 1
(A) 1110(B) 1011-------------
R2R1 0000 0000 Initialisation de R1 et R2+A*20 1110 b0=1 => on ajoute A*20
-------------R2R1 0000 1110 Décalage de B > B (0101)
Copyright © 2004 Epum/Lirmm79
R2R1 0000 1110 Décalage de B => B=(0101)+A*21 1 110 b0=1 => on ajoute A*21
-------------R2R1 0010 1010 Décalage de B => B=(0010)+0*22 b0=0 => on ajoute 0*22
-------------R2R1 0010 1010 Décalage de B => B=(0001)+A*23 111 0 b0=1 => on ajoute A*23
-------------R2R1 1001 1010 Fin
Multiplieur séquentiel 2
(A) 1110(B) 1011
---------------R3R2R1 0 0000 0000 Initialisation de R3 R2 R1+A 1110 b0=1 => (R2 + A -> R3R2)
---------------R3R2R1 0 1110 0000 Décalage de R3R2R1R3R2R1 0 0111 0000 Décalage de B => B=(0101)
Copyright © 2004 Epum/Lirmm80
+A 1110 b0=1 => (R2 + A -> R3R2)---------------
R3R2R1 1 0101 0000 Décalage de R3R2R1R3R2R1 0 1010 1000 Décalage de B => B=(0010) +0 0000 b0=0 => (R2 + 0 -> R3R2)
---------------R3R2R1 0 1010 1000 Décalage de R3R2R1R3R2R1 0 0101 0100 Décalage de B => B=(0001) +A 1110 b0=1 => (R2 + A -> R3R2)
---------------R3R2R1 1 0011 0100 Décalage de R3R2R1R3R2R1 0 1001 1010 Fin
Multiplieur séquentiel 3
(A) 1110---------------
R3R2R1 0 0000 1011 Initialisation de R3R2R1 (B->R1)+A 1110 b0(R1)=1 => (R2 + A -> R3R2)
---------------R3R2R1 0 1110 1011 Décalage de R3R2R1R3R2R1 0 0111 0101 b0(R1)=1 => (R2 + A -> R3R2) +A 1110
Copyright © 2004 Epum/Lirmm81
---------------R3R2R1 1 0101 0101 Décalage de R3R2R1R3R2R1 0 1010 1010 b0(R1)=0 => (R2 + 0 -> R3R2) +0 0000
---------------R3R2R1 0 1010 1010 Décalage de R3R2R1R3R2R1 0 0101 0101 b0(R1)=1 => (R2 + A -> R3R2) +A 1110
---------------R3R2R1 1 0011 0101 Décalage de R3R2R1R3R2R1 0 1001 1010 Fin