Você está na página 1de 4

Soma e subtrao de nmeros binrios

Oper aes Ar it mt icas

Utilizando operaes bsicas para adio e


subtrao tambm possvel efetuarmos
multiplicao e diviso.

Multiplicao pode ser feita pela repetio de adies


Diviso poder ser feita essencialmente pela repetio de
subtraes

Aula 7
CIn-UFPE

Soma e subtrao de nmeros binrios

Soma e subtrao de nmeros binrios

Se dois nmeros binrios de r-bits so adicionados o


resultado poder possuir r+1 bits por causa do carry.

1
1
1 0
1 0

Soma e subtrao de nmeros binrios

Subtrao binria

Se a soma de dois nmeros de r-bits tem como resultado


um nmero > 2r-1 bits dizemos que houve overflow, ou seja
estouro da capacidade de armazenamento do registrador.
Exemplo:
r=3 (registrador de 3 bits)
Somar -> 6 (110) + 4(100)
1 1 0
1 0 0
1 0 1 0
O nmero formado por A+B ser A+B-2r desde que no
possumos (r+1) bits disponveis .
No exemplo acima:
A+B-2r= 110+100-1000=1010-1000 = 0010

Adio
Adio binria executada de forma similar a adio
decimal.
+1
O carry equivalente ao vai 1
0011
do sistema decimal e deve ser
+0 0 0 1
incorporado a soma do prximo
0 1 0 0 (carry=1)
par de bits mais significativos

1 1
0 1 1 0
1 1 1 0
0 1 0 0

Assim uma soma de dois nmeros de 5 bits resultou em


um nmero de 6 bits.
Regra Geral:
Se a soma de dois nmeros de r bits cai em um valor
menor ou igual a 2r-1 ento possvel se ter o resultado
da soma registrado tambm em um registrador de rbits. Caso contrrio necessrio um registrador de r+1
bits para armazenar o resultado da adio.

De fato o que queremos mostrar ainda que


inteiramente possvel construir um computador
no qual um adicionador a nica Unidade
Aritmtica presente.

bit perdido

Assim como a adio, a subtrao obedece o


mesmo caminho que subtrao decimal

0 1
1 1 0
(borrowing)
-0 - 0 -1 -1
0
1 0
1
Exemplo:
1 1 0 1 1
- 0 1 1 0 1
0 1 1 1 0
Observamos que existe uma diferena no processo para
operar adio e subtrao.
A princpio portanto precisaramos de
dois circuitos
diferentes para operar as duas funes.
Existe no entanto, mecanismos que podem minimizar
diferenas na implementao de tais funes lgicas
baseados no sistema modular de nmeros.

Sistema Numrico Modular

Subtrao binria

Como
desenvolver
um
somador/subtrator otimizado?

circuito

Questionamentos
Como o mtodo para codificao influncia na
realizao das operaes?
Como nmeros negativos so representados?
Quantos bits so necessrios para representar
a informao?

Em computao ns temos limitaes no tamanho de


registradores para representar nmeros e a aritmtica
modular obedece tais limitaes.
Os nmeros so finitos e devem ser representados no
intervalo entre 0 e 2r-1, onde r o nmero de bits dos
registradores.

010

+0
+7
+6

000

010

110

011

101

+5

+1

001

111

100

+2

+3

+4

Sistema Numrico Modular

Sistema Numrico Modular

Se A e B so de mdulos equivalentes N, o resto


obtido quando dividimos A por N o mesmo que o
resto obtido no diviso de B por N.

Se agora A= 011 e B= 110. Neste caso observamos que A+B


maior que 2r para r=3.
Se a soma igual ou maior que 2r, o nmero o resto que
ns obtemos subtraindo 2r da soma. Assim formalizando
teramos:

A+B=011+110=1001

+0
+7

110
+6

000

+5

+2

010

110

101

011
100

N=2r A NB (representao formal)


Exemplo:
A=10 B=18 dizemos que:

A 8B

011

resto

A 23 B desde que A= 10=1*8+2 e B=18=2*8+2


No sistema de nmero modular
Adio mdulo N= 22 =4; r=2
0 NN
+ 0 1
2
3
0 0 1
2
3
1 N N+1
2 NN+2
1 1 2
3
4 40
2 2 3
4 40 5 41
N-1 NN+N-1 = 2N-1
3 3 4 40 5 N 1 6 42

Ou seja:
1001 - 2r =1001-1000
= 001

+1

001

111

010

Representao
circular
de nmeros armazenados
em registradores de 3
bits sem sinal.
A= 010
B=010
A+B=100

+3

+4

Complemento a 2

Complemento a 2

Um nmero B negativo de A se A+B=0 => B=-A


O que acontece se ns trabalharmos com um conjunto de
nmeros no mdulo N, onde A+B N0?
Isto indica que A negativo de B. Mas B neste caso no
nico.
B tal que B=KN-A, K=0, 1, 2, ... satisfaz a condio que B
negativo de A no mdulo N
Exemplo: k=0, B= - A
k=1, B=N-A,
Consideremos mdulo N= 4 e A = 3. Assim teramos:
B=kN-A => B=kN-(3), com k=1, r=2, N=2r= 4,
teremos
B=N-A => B=4-3=41
Assim, B+A=0 => (01+11) = 100 (0 no mdulo 4)

ignorado

Ns podemos usar N-A em qualquer clculo chamando -A,


contanto que usemos operaes no mdulo N.
De uma forma geral C=D-A equivalente (mdulo N)
C=D+(N-A)
Se ns podemos encontrar N-A no envolvendo subtrao ns
vemos que a operao de subtrao se transforma em uma
operao de adio.
Considere a operao usando-se registradores de r bits e
mdulo N=2r. Representemos N em binrio por
N=1000.....00 = 111...11 + 0000..1
r+1 termos r termos r termos
faamos
A = ar-1, ar-2.......,a0 um nmero de r bits
N-A = (1-ar-1),(1-ar-2), ................(1-a0)+000...01 , onde aj=0 ou 1 e

Representao de nos. negativos complementados


a 2.

complemento a 2 de A

{1- a = 1 ou 0
j

Complemento a 2

Complemento a 2
O valor (N-A) chamado complemento a 2 de A.
De uma maneira menos formal o complemento a
2 de um nmero binrio de r bits encontrado
pela expresso:
(N-A):= A+[1]

Exemplo: Complemento a 2 de A:=[01000]


A + [1] = 10111+00001 = 11000
Exemplo:
Qual o complemento a 2 de A = +2
r=3 A=010
N=2r => N = 23 = 1000
N=1000 = 111+001
ento N-A = 1000-010 = (111+001) - 010= (111- 010) + 001
= (1-0),(1-1),(1-0) + 001
= 1
0
1 + 001
= 110

Exemplos

Mtodo simples de converso


Complemento a 2 = Complemento a 1 + 1
Ex: Comp2 de 7 => 0111 -> 1000 + 1 -> 1001 (representao of -7)
Comp2 de -7 => 1001 -> 0110 + 1 -> 0111 (representao of 7)

-1
-2
-3

1111
1110

1101

+2

0010

0011

+3

-5

1011

0100

+4

1010

0101

1001

0110

-7

0111

1 100 = - 4

1100

-6

Caractersticas:
Similar a complemento a 1
exceto que deslocamos uma
posio no sentido do relgio

0 100 = + 4

0000
+1
0001

-4

Apenas uma representao


para o zero (0)

+5

Faixa numrica para r bits


= +/-2r-1 -1

+6

+7

Overflow

Quando efetuamos operaes aritmticas usando complemento


a 2 devemos considerar a possibilidade de obtermos resultados
que extrapolam os limite de representao do nmeros num
dado mdulo N, ou seja fora dos limites de +/- (2r-1-1)
Quando isto ocorre dizemos que temos uma condio de
aritmtica de overflow.
Overflow poder ocorrer quando:

1. A = 01112
= +710 B = 01102
= +610
A-B = 0111 + 1010 = 10001 16 0001
2. A = 00112
=+310
B = 11012
A-B = 0011 + 0011 = 0110

+0

= -310

1. Os dois operandos tm o mesmo sinal e


2. a adio complemento a 2 dos operandos produzir um
resultado com um sinal oposto aos mesmos.

3. A = 11012
= -310 B = 01002
=+410
A-B = 1101 + 1100 = 11001 16 1001

Exemplo: (N=16, r=4)

Sempre que estivermos trabalhando com complemento a 2, o carry


gerado no bit mais significativo ignorado.
Esta generalizao assume que o resultado real do clculo cai
sempre dentro dos limites +/- (2r-1-1)

A = 0110 2 = 610 B = 00112 = 310


Ento A+B = 01102 + 00112 = 10012 , mas 10012 no nove na
aritmtica complemento a 2 desde que o sinal mais significativo
o de sinal. Assim o resultado -7, o que provoca o Overflow.
Overflow = C4 C3

Nmeros fracionrios

As partes separadas por vrgula em nmeros fracionrios devem


ser tratadas como dois nmeros inteiros. Depois de completada
a operao envolvendo os dois nmeros, recolocamos a vrgula
no lugar adequado.
Exemplo:
A-B com A=1101.10 e B=10.111
Os dois so nmeros positivos a priori. Se ns trabalharmos com
aritmtica complemento a 2 ns devemos primeiro decidir o valor
de r, ou seja, o nmero de bits necessrios para represent-los
corretamente.
Para r = 8 , considerando bit de sinal teramos A = 01101.100,
adicione 0 como LSB
O complemento a 2 de B ser:
Adicionemos 0 extras para r = 8 bits, assim B= - 00010.111
Complemento a 2 de B = N-B = 11101.000 + 0000.001 = 11101.001
Assim A-B =
01101.100
11101.001
Resultado A - B =
101010.101
carry descartado

Somador/Subtrator

Circuito somador e subtrator integrados


A 3 B 3 B3

A 2 B2 B2

0 1 Sel

CO +

CI

A 1 B1 B1

CO +

CI

A 0 B 0 B0

0 1 Sel

0 1 Sel

CO +

CI

0 1 Sel

CO +

S3

S2

S1

S0

Overflow

CI

Add/Subtract

Exerccio - Adio em BCD

Dgitos em BCD so representados entre 0 e 9 e


possuem representao de 0000 a 1001 no sistema
binrio.
Exemplo:
5+3 = 8
0101 (5)
+ 0011 (3)
1000 = 8

5+8 = 13
0101 (5)
+1000 (8)
1101 = 13

Projeto - Adio em BCD


Implementar um somador BCD
de dois dgitos
A3

Problema: Como resolver


nmeros acima de 9 se
s posso representar
digitos at 9?

CO FA

13 = 0001 0011 (binrio composto por dois digitos BCDs)


Para atingirmos esta soluo soma-se 6 ao digito BDC que excede 9.
Assim 5 (0101) + 8 (1000) = 13 (1101) -> convertendo para BDC
teremos: 1101
+0110
1 0011 (13 em BCD)
digito menos
significativo

CI

Soluo: some 6 (0110) se o digito excede o nmero 9

digito mais
significativo

B3

A1

11XX

A2

1X1X

A2

B2

CO F A

S3

B1

CO FA

CI

A0

CI

CO FA

S2

S1

B0

CO FA

CO F A

Cout

CI

A1

CI

S0

CI

Cin

Você também pode gostar