Вы находитесь на странице: 1из 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

De fato o que queremos mostrar ainda que inteiramente possvel construir um computador no qual um adicionador a nica Unidade Aritmtica presente.

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.

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

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.

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)

Assim como a adio, a subtrao obedece o mesmo caminho que subtrao decimal

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

bit perdido

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.

Subtrao binria

Sistema Numrico Modular

Como desenvolver um somador/subtrator otimizado?


Questionamentos

circuito

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.
+0 +7 +6
110 000 111 001 010

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

010
+1 +2

+5

101 100

011

+3

+4

010

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

Sistema Numrico Modular


Sistema Numrico Modular


N=2r A NB (representao formal) Exemplo: A=10 B=18 dizemos que:

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:
+0

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

A+B=011+110=1001 Ou seja: 1001 - 2r =1001-1000 = 001

A 8B

110
+6

+7
110

000 111 001 010

+1 +2

011

+5

101 100

011

+3

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

+4

Complemento a 2

Complemento a 2

Representao de nos. negativos complementados 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)

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

complemento a 2 de A

{1- a = 1 ou 0
j

ignorado

Complemento a 2

Complemento a 2
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)
+

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

-1 -2 -3 -4 -5 -6
1111 1110

+0
0000 +1 0001 0010

0 100 = + 4

1101

+2

1 100 = - 4 -

1100 1011 1010 1001

0011 0100 0101 0110 0111

+3 +4

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

Apenas uma representao para o zero (0) Faixa numrica para r bits = +/-2r-1 -1

+5

-7

+6

+7

Exemplos
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 = -310

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

Exemplo: (N=16, r=4)

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 0 1 Sel A 2 B2 B2 0 1 Sel A 1 B1 B1 0 1 Sel A 0 B 0 B0 0 1 Sel

A CO + S S3

B CI

A CO + S S2

B CI

A CO + S S1

B CI

A CO + S S0

B CI Add/Subtract

Overflow

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 B3 A2 B2 CO FA S CI CO F A S CI A1 B1 A0 B0

Problema: Como resolver nmeros acima de 9 se s posso representar digitos at 9?


A1

CO FA S

CI

CO FA S

CI

Cin

Soluo: some 6 (0110) se o digito excede o nmero 9 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 mais significativo digito menos significativo
Cout

11XX

A2

1X1X CO F A S CI CO FA S CI 0

S3

S2

S1

S0

Вам также может понравиться