+ All Categories
Home > Documents > Ecole Polytechnique Universitaire de Montpellier Université … ·  · 2017-09-13sous chaque...

Ecole Polytechnique Universitaire de Montpellier Université … ·  · 2017-09-13sous chaque...

Date post: 31-Mar-2018
Category:
Upload: nguyenhanh
View: 220 times
Download: 4 times
Share this document with a friend
82
Copyright © Epum/Lirmm 1 Ecole Polytechnique Universitaire de Montpellier Université Montpellier II Place Eugène Bataillon, 34095 Montpellier cedex 05, FRANCE Laboratoire d'Informatique, de Robotique et de Microélectronique de Montpellier UMR 5506 Université Montpellier II / CNRS 161 rue Ada, 34392 Montpellier cedex 05, FRANCE Arithmétique binaire
Transcript

Copyright © 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

Arithmétique binaire

Copyright © Epum/Lirmm2

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.

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

C

x1x2…xn

C*

bn élémentsxi {,, …}

Ib éléments

Copyright © Epum/Lirmm3

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:

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

Copyright © Epum/Lirmm4

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 © Epum/Lirmm5

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).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

Copyright © Epum/Lirmm6

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

(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 ...

Copyright © Epum/Lirmm7

Conversion de bases

Méthode itérative :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

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 © Epum/Lirmm8

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) + 37 = (3*2) + 1 3 = (1*2) + 1 (29)10 = (35)81 = (0*2) + 1

(29)10 = (11101)2

Copyright © Epum/Lirmm9

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.

Exemple : Conversion de (29)10 en binaire1 3 7 14 291 1 1 0 1 => (29)10 = (11101)2

Copyright © Epum/Lirmm10

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 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)

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 © Epum/Lirmm11

Représentation des nombres négatifs

22 21 20 N 0 0 0 0 0 0 1 1 0 1 0 2 0 1 1 3 1 0 0 -0 1 0 1 -1 1 1 0 -2 1 1 1 -3

Signe + Valeur absolue

Copyright © Epum/Lirmm12

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 • 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

Représentation des nombres négatifs

Copyright © Epum/Lirmm13

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 0 1 1 3 1 0 0 -3 1 0 1 -2 1 1 0 -1 1 1 1 -0

Copyright © Epum/Lirmm14

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

• 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

Représentation des nombres négatifs

Copyright © Epum/Lirmm15

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

- 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) = 4770 C2(1010) = 0110

Représentation des nombres négatifs

Copyright © Epum/Lirmm16

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 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

Copyright © Epum/Lirmm17

0 1 264 ?

Complexité

264 = 1.8 10191.8 1019

106 * 3600 * 24 * 365= 584 942 années

Copyright © Epum/Lirmm18

Synthèse : Algorithme / Structure

E0

En

S0...

Sn

.

.

.

Table de vérité => Impossible

=> Parallélisation

=> Récurrence

=> Algorithme

=> Structure itérative

Copyright © Epum/Lirmm19

A

X

YS si A=0 alors S=X

si A=1 alors S=Y

000001010011100101110111

0011

1

10

0

AXY S

B2 B2n

2n

8=

0 0 11

0 1 1 0

00 01 11 10

0

1

AXYS

S = AX+AY

S

A

X

Y

0

1

Multiplexeurs

0

1

A

S

X

Y

Copyright © Epum/Lirmm20

A

X

YS

m

m0

1

S0

A

Y0 X0

A A

Y1 X1 Ym Xm

S1 Sm

................................

....................................................

.......................................

Multiplexeurs

m

Copyright © Epum/Lirmm21

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(A0..An)2

.......................

E0 En

A0..An. A0..An.

A0A1A2

0

1

00011011

00...0

11...1

Multiplexeurs

Copyright © Epum/Lirmm22

Récurrence - Décodeur de Gray

a3a2a1a0

0000000100100011010001010110011110001001101010111100110111101111

b3b2b1b0

0000000100110010011001110101010011001101111111101010101110011000

b0 = a0 a1b1 = a1 a2b2 = a2 a3b3 = a3

cd

ab 00 01 11 10

00

01

11

10

Copyright © Epum/Lirmm23

S0 = A0S1 = A0’.A1 + A0.A1’

A0 A1S2 = (A0+A1)’.A2 + (A0+A1).A2’

(A0+A1) A2S3 = (A0+A1+A2) A3...

Récurrence - 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

i=1

n-1Sn = Ai An

Copyright © Epum/Lirmm24

Fe =1 si A3=B3 et A2=B2 et A1=B1 et A0=B0

Fe =1 si A=B

A=A3 A2 A1A0 B=B3 B2 B1 B0

Fe

00011011

1001

AiBi fifi = AiBi+AiBi

fi = Ai BiFe= (A3 B3) (A2 B2) (A1 B1) (A0 B0)

Récurrence - Comparateur égalité

Copyright © 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)

Fs =1 si A>B

A=A3 A2 A1A0 B=B3 B2 B1 B0

Fs

00011011

0010

AiBi gigi = AiBi

Récurrence - Comparateur supériorité

Fs =(A3B3)+(A3B3 )(A2B2)+(A3B3 )(A2B2 )(A1B1) + (A3B3 )(A2B2 )(A1B1 )(A0B0)

Copyright © Epum/Lirmm26

A0A1A2A3

C0C1C2C3C4

S0S1S2S3

Structure itérative

A=A3 A2 A1A0

S= S3 S2 S1S0

Copyright © Epum/Lirmm27

A0A1A2A3

C0=0C1C2C3C4

S0S1S2S3

Ci+1 = Ci + Ai

S i = Ai.Ci’ + Ai’. Ci= Ai Ci

Structure itérative - Complément à 2

Ci+1

Ai

Ci

Si

S = C2(A)

A=A3 A2 A1A0

S= S3 S2 S1S0

Copyright © Epum/Lirmm28

000 0001 1010 0011 0100 0101 0110 0111 1

Fe =1 si A=B

A=A3 A2 A1A0 B=B3 B2 B1 B0

Fe

A0B0A1B1A2B2A3B3

C0C1C2C3C4Fe

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

Structure itérative - Comparateur égalité

Copyright © Epum/Lirmm29

A0B0A1B1A2B2A3B3

C0=1C1C2C3C4Fe ====

Ci+1

Ai Bi

Ci

Structure itérative - Comparateur égalité

Ci+1 = AiBiCi+AiBiCi= Ci(Ai Bi)

Copyright © Epum/Lirmm30

000 0001 1010 0011 0100 1101 1110 0111 1

A0B0A1B1A2B2A3B3

C0C1C2C3C4Fs

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

Fs =1 si A>B

A=A3 A2 A1A0 B=B3 B2 B1 B0

Fs

Structure itérative - Comparateur supériorité

Copyright © Epum/Lirmm31

Ci+1

Ai Bi

Ci

A0B0A1B1A2B2A3B3

C0=0C1C2C3C4Fs >>>>

Structure itérative - Comparateur supériorité

Ci+1 = AiBi+AiCi+ BiCi

Copyright © 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

A0B0A1B1A2B2A3B3

C0C1C2C3C4

S0S1S2S3

Ci+1 = AiBi + Ci ( Ai Bi)

S i = Ai Bi Ci

Additionneur

S = A + B

A=A3 A2 A1A0 B=B3 B2 B1 B0

S=R S3 S2 S1S0

Copyright © Epum/Lirmm33

A0B0A1B1A2B2A3B3

C0=0C1C2C3C4

+ + + +S0S1S2S3

Ci+1

Ai Bi

Ci

Si

Additionneur

Ci+1 = AiBi + AiCi + BiCi

Ci+1 = AiBi + Ci ( Ai Bi)

S i = Ai Bi Ci

Copyright © Epum/Lirmm34

A0A1A2A3

C0C1C2C3C4

S0S1S2S3

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

Incrémenteur

S = A + 1

A=A3 A2 A1A0

S=R S3 S2 S1S0

Copyright © Epum/Lirmm35

A0A1A2A3

C0=1C1C2C3C4 +1 +1 +1 +1

S0S1S2S3

Ci+1

Ai

Ci

Si

Ci+1 = Ci.Ai S i = Ai Ci

Incrémenteur

Copyright © 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

A0B0A1B1A2B2A3B3

C0C1C2C3C4

S0S1S2S3

+ + + +- - - -

Soustracteur

S = A - B

A=A3 A2 A1A0 B=B3 B2 B1 B0

S=R S3 S2 S1S0

Copyright © Epum/Lirmm37

A1B1A2B2A3B3

C2C3C4

- - -

A0B0

C0=0C1

-S0S1S2S3

si A>B alors C4=0si A<B alors C4=1

+ + + +- - - -

Ci+1

Ai Bi

Ci

Si

Soustracteur

Ci+1 = AiBi + AiCi+BiCi

Ci+1 = AiBi + Ci ( Ai Bi)

S i = Ai Bi Ci

Copyright © Epum/Lirmm38

Ci+1

Ai Bi

Ci

Ai Bi

CiCi+1

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

+ -

Soustracteur

Copyright © Epum/Lirmm39

A1B1A2B2A3B3

C2C3C4

- - -

A0B0

C0=0C1

-S0S1S2S3

C2C3C4

+ + +

A1B1A2B2A3B3 A0B0

C0=0C1

+S0S1S2S3

+ - + - + - + -

Soustracteur

Copyright © Epum/Lirmm40

Relations Soustracteur / Complément à 1

C1 (C1(A) + B) = C1 (2n - 1 - A + B)

= 2n - 1 - 2n + 1 + A – B

= A - B

C2C3C4 + + +

A1B1A2B2A3B3 A0B0

C0=0C1 +

S0S1S2S3

+ - + - + - + -

XC1(X)2n-1

1000+ 0111= 1111

C1(X) = 2n -1-X

Copyright © Epum/Lirmm41

A0A1A2A3

C0C1C2C3C4

S0S1S2S3

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

Décrémenteur

S = A - 1

A=A3 A2 A1A0

S=R S3 S2 S1S0

Copyright © Epum/Lirmm42

A0A1A2A3

C0=1C1C2C3C4 +1 +1 +1 +1

S0S1S2S3

Ci+1

Ai

Ci

Si

Ci+1

Ai

Ci

Si

Ci+1 = Ci Ai S i = Ai Ci S i = Ai Ci

Décrémenteur

Ci+1 = Ci Ai

Copyright © Epum/Lirmm43

Additionneur / soustracteur

s1s2s3

r0r1r2r3++ +

r4+

s0

a0 b0a1 b1a2 b2a3 b3

Op

Op = 0 => A + BOp = 1 => A - B

Copyright © Epum/Lirmm44

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 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)

Copyright © Epum/Lirmm45

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)..........- 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

Copyright © Epum/Lirmm46

Additionneur à carry anticipée

C0

G0P0G1P1G2P2G3P3

C4

s0s1s2s3

C3 C2 C1

G.P. G.P. G.P. G.P.

C.L.U.

a0b0a1b1a2b2a3b3

Copyright © Epum/Lirmm47

C4 C3 C2 C1

C0

P3 G3 P2 G2 P1 G1P0 G0

Bloc CLU

Copyright © Epum/Lirmm48

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 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.

Copyright © Epum/Lirmm49

Additionneur Algébrique

Comparateur

Additionneur / Soustracteur

Sa|A| Sb|B|

Signe

AA BB

|R|

R = A + B avec A et B positifs ou négatifs

Sr

Copyright © Epum/Lirmm50

Additionneur Algébrique

7655- 2425

= 0 5230

2425- 7655

= 9 4770

Code de – 5230 ???

C10 (94770) = 05230

Copyright © Epum/Lirmm51

Addition en complément à b

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.

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 + Cb(B) { Cb(B) = bn – B }

Copyright © Epum/Lirmm52

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).

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)

Copyright © Epum/Lirmm53

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)

Résultat = - (N + M) = - (2n + M + N) sur n bits= - (2n - S)= - C2(S)

Copyright © Epum/Lirmm54

Additionneur Algébrique

Codage Codage

Décodage

Additionneur

Sa|A| Sb|B|

Sr|R|

R = A + B avec A et B positifs ou négatifs

Copyright © Epum/Lirmm55

Base 10 - Addition en complément à10

225 = 0225 = 0225 -110 = - 0110 = +9890

-------10115 Signe=0 =>R= + 115

-225 = - 0225 = 9775 +110 = +0110 = +0110

-------09885 Signe=9 =>R= - C10(885) = - 115

Copyright © Epum/Lirmm56

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-14 = -01110 +(-14) = 10010

-------011111 Signe=1 => R= -C2(11111)2

= -(00001)2= -(1)10

Copyright © Epum/Lirmm57

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+ 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)

Copyright © Epum/Lirmm58

Additionneur/Soustracteur Algébrique

A - B = A + C2 (B) = A + C1 (B) + 1

A0B0A1B1A2B2A3B3

OpC1C2C3C4

+ + + +S0S1S2S3

Op = 1 <=> - , Op = 0 <=> +

C0

Copyright © Epum/Lirmm59

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.

A = A + bn (tronqué sur n bits)

A – B = A + bn – B

A – B = A + Cb-1(B) + 1 { Cb-1(B) = bn – B - 1}

Le bit de retenue de l'addition doit être ignoré. Si ce bit vaut 0, leré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.

Copyright © Epum/Lirmm60

Base 10 - Addition en complément à 9

225 = 0225 = 0225 -110 = - 0110 = +9889

-------10114+ 1-------0115 Signe=0 =>R= + 115

-225 = - 0225 = 9774 +110 = +0110 = +0110

-------09884 + 0-------9884 Signe=9 =>R= - C9(884) = - 115

Copyright © Epum/Lirmm61

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

13 = 01101 13 = 01101-14 = -01110 +(-14)= 10001

-------011110+ 0-------11110 Signe=1 => R=-C1(11110)2

=-(00001)2 =-(1)10

Copyright © Epum/Lirmm62

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) = 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

Copyright © Epum/Lirmm63

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 :

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)

Copyright © Epum/Lirmm64

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+ 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)

Copyright © Epum/Lirmm65

Multiplication par bn

i=-m

n(N)b = pibi = (pn pn-1 ... p1 p0 , p-1 p-2 ... p-m)b

(pn pn-1 ... p1 p0 p-1 ... p-k , p-k-1 ... p-m)b = pibi+k

i=-m

n

pibi+k = bk *pibi = bk *(N)bi=-mi=-m

nn

Ecriture d ’un nombre n en base b :

Décalage de k positions vers la gauche :

Multiplication par une puissance de 2 => décalage

Copyright © Epum/Lirmm66

Multiplication binaire

1 1 0 0 Multiplicande1 1 0 1 Multiplieur---------

1 1 0 0 Produit partiel0 0 0 0 Produit partiel

1 1 0 0 Produit partiel1 1 0 0 Produit partiel

-------------------1 0 0 1 1 1 0 0

1 2* 1 3--------

3 61 2

--------1 5 6

Copyright © Epum/Lirmm67

A3 B0 A2B0 A1B0 A0B0

A3 B1 A2B1 A1B1 A0B1

A3 B2 A2B2 A1B2 A0B2

A3 B3 A2B3 A1B3 A0B3

P1P2P3P4

P1 + P2 = R1 => R1 + P3 = R2 => R2 + P4 = S

+

Ri Ai-1Bj

Ri+1

Multiplieur

S = A * B

A=A3 A2 A1A0 B=B3 B2 B1 B0

S=S7S6S5S4S3 S2 S1S0B3 B2 B1 B0

A3 A2 A1 A0

*

S7 S6 S5 S4 S3 S2 S1 S0

Copyright © Epum/Lirmm68

A3 B0 A2B0 A1B0 A0B0

A3 B1 A2B1 A1B1 A0B1

A3 B2 A2B2 A1B2 A0B2

A3 B3 A2B3 A1B3 A0B3

S7 S6 S5 S4 S3 S2 S1 S0

+ + + +

+ + + +

+ + + +

B0

B1

B2

B3

A0A1A2A3

A0A1A2A3

A0A1A2A3

A0A1A2A3

0

0

0

0

Multiplieur

Copyright © Epum/Lirmm69

Complément à 2

Multiplieur en complément à 2

22 21 20 N 0 0 0 0 0 0 1 1 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.2n-1 + ai.2ii=0

n-2

Copyright © Epum/Lirmm70

Multiplieur en Complément à 2

X = - xn-1.2n-1 + xi.2ii=0

n-2

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

2

0

33

2

0

33

22'.2'.222

12)'.(2212'.2222

2)(22)(222.

22

22

ii

i

i

ii

ji

ij

ji

ii

i

i

ii

ji

ij

ji

ii

i

i

ii

ji

ij

ji

i

ii

i

ii

)b(a)b(ababa

ba)b(ababa

babababaBA

aaA

bbB

=> -X = -2n + C1(X) + 1

C2(X) = 2n - X

Copyright © Epum/Lirmm71

Multiplieur en Complément à 2

= a0b020 + a1b021 + a2b022

+ a0b121 + a1b122 + a2b123

+ a0b222 + a1b223 + a2b224

+ a0b323 + a1b324 + a2b325

+ a3b023 + a3b124 + a3b225

+ 24 + a3b326 - 27

Copyright © Epum/Lirmm72

Multiplieur en Complément à 2

P7 P6 P5 P4 P3 P2 P1 P0

+ + + +

+ + + +

+ + + +

A0B0A1B0A2B0A3B0

A0B1A1B1A2B1A3B1

A0B2A1B2A2B2A3B2

A0B3A1B3A2B2A3B3

1

0

0

0

Signe

Copyright © Epum/Lirmm73

Multiplieur en Complément à 2

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

2

0

33

32

0

33

32

0

2

0

633

2

03

32

03

32

0

2

0

633

2

0

33

2

0

33

222'2'2'2'222

222'2'2'22'222

22'2or

222'2'2222

12)'(2212'2222

2)(22)(222.

22

22

ab)b(a)b(abababa

ab)b(a)b(abababaP

aa

ab)b(a)b(abababa

ba)(abbaba

baabbabaBAP

aaA

bbB

ii

i

i

ii

ji

ij

ji

ii

i

i

ii

ji

ij

ji

ii

i

i

ii

ji

ij

ji

ii

i

i

ii

ji

ij

ji

ii

i

i

ii

ji

ij

ji

i

ii

i

ii

Copyright © Epum/Lirmm74

Multiplieur en Complément à 2

P7 P6 P5 P4 P3 P2 P1 P0

+ + +

+ + +

+ + +

A0B0A1B0A2B0

0

A3B0

00A2B1 A0B1A1B1

+ + +

A0B2A1B2A2B2

+ B3

A3

A3B1

A3B2

+

+

1

B3

A0B3

A3

A1B3A2B2A3B3

ignoré

Signe

Copyright © Epum/Lirmm75

1 0 1 1- 1 0 0 1---------------0 0 1 0 0

- 1 0 0 1---------------

0 1 0 0 0- 1 0 0 1

----------------1 0 0 0 0

- 1 0 0 1-----------------

0 1 1 1

1 ,0 0 1

1 0 0 1

1

0

0

1

Soustraction 5 bits

Exemple : 11 / 9

Division Binaire

1 1 9

2 0 1 , 2 2 ...2 0

2

Copyright © Epum/Lirmm76

- 0 1 0 0Q R R R R

R 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 1- 0 1 0 0 11

0 0 1 0 0- 0 1 0 0 10

0 1 0 0 0- 0 1 0 0 10

1 0 0 0 0- 0 1 0 0 11

0 1 1 1 0- 0 1 0 0 11

Si R>B alors Q=1 et R-Bsinon Q=0 et R

Diviseur

S = A / B

A=A3 A2 A1A0 B=B3 B2 B1 B0

S=S7S6S5S4,S3 S2 S1S0

Copyright © Epum/Lirmm77

R

+

01

+ -

R B

Si alors

Ci+1 Ci

- Si

B-

R

RSi

CiCi+1+

Bo+ - + - + -

B1B2+ -

B30+ -

0

Bo+ - + - + -

B1B2+ -

B30+ -

0

Bo+ - + - + -

B1B2+ -

B30+ -

0

Bo+ - + - + -

B1B2+ -

B30+ -

0

Bo+ - + - + -

B1B2+ -

B30+ -

0

Bo+ - + - + -

B1B2+ -

B30+ -

0

Bo+ - + - + -

B1B2+ -

B30+ -

0

A3

A2

A1

A0

0

0

0

0 0 0 0

Q3

Q2

Q1

Q0

Q-1

Q-2

Q-3

Diviseur

Copyright © Epum/Lirmm78

A0A1A2A3

C0=0C1C2C3C4

S0S1S2S3

Complément à 2 série

Ci+1

Ai

Ci

Si

Ai

Ci+1 Ci

Si

D Q

H

Ai

Ci+1Ci

Si

D Q

H

Copyright © Epum/Lirmm79

Additionneur série

D Q

H

Ai

Ci+1Ci

Si

D Q

H

A0B0A1B1A2B2A3B3

C0=0C1C2C3C4 + + + +

S0S1S2S3

Ci+1

Ai Bi

Ci

Si

Ci+1

Ai Bi

Ci

Si

Bi

Copyright © Epum/Lirmm80

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)+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

Copyright © Epum/Lirmm81

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) +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

Copyright © Epum/Lirmm82

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

---------------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


Recommended