Вы находитесь на странице: 1из 66

CAPÍTULO 6

ARITMÉTICA DIGITAL:
OPERAÇÕES E CIRCUITOS

1
6.1- ADIÇÃO E SUBTRAÇÃO BINÁRIAS

Adição binária

Os números binários são somados como os decimais.


São apenas quatro casos que podem ocorrer na soma de dois bits em qualquer
posição. Esses são os casos:

0+0=0
1+0=1
1 + 1 = 10 = 0 + carry de 1 para próxima posição
1 + 1 + 1 = 11 = 1 + carry de 1 para próxima posição

Carry da posição anterior

A adição é a operação aritmética básica utilizada pelos dispositivos digitais tanto


para subtração como multiplicação e divisão
2
Carry out na soma binária

Quando é somado dois números no sistema de numeração binária (direta), o resultado


pode ser incorreto, porque a resposta pode requerer mais bits, portanto ocorre um
transbordamento e dessa forma o carry out (Cy) vai a 1.

Exercício : Use 5 bits. Sistema de numeração binária


Some 14 com 17
1410 = 011102 (sistema binário puro)
1710 = 100012 (sistema binário puro)

1 111
15 → 01111
17 → + 10001
1 00000
carry out (carry para fora)
Quando o carry out for 1 significa que o resultado não cabe na representação de 5
bits, portanto ocorreu um transbordamento.

3
Subtração binária

A subtração binária é efetuada exatamente como a subtração de números


decimais.

São quatro as possíveis situações ao se subtrair um bit de outro em qualquer


posição de um número binário.

4
6.2- REPRESENTAÇÃO DE NÚMEROS COM SINAL

• Um registrador de seis bits pode armazenar números binários puros na faixa


de 000000 a 111111 (de 0 a 6310). Isso representa a magnitude do número,
ou seja, número sem sinal.

• Para representar um número com o sinal (+ ou -) deve-se acrescentar mais a


esquerda do número um outro bit denominado bit de sinal. A convenção
adotada foi:

Um 0 no bit de sinal indica um número positivo.


Um 1 no bit de sinal indica um número negativo.

010001 111011
↗ ↖
Bit de sinal Bit de sinal
número positivo número negativo
5
Representação de números com sinal no Sistema sinal-magnitude
Os números mostrados na Fig. 6.1 são constituídos de um bit de sinal e seis bits de
magnitude. Os bits de magnitude correspondem ao equivalente binário direto do
valor decimal representado, tanto na representação positiva como na negativa.
Essa representação é denominada sistema sinal-magnitude para números binários
com sinal. 7 bits

Número positivo

magnitude correspondem ao equivalente binário direto

Número negativo

Fig. 6.1
magnitude correspondem ao equivalente binário direto

A faixa de valores que pode ser representada no sistema sinal-magnitude é:


- (2N - 1) a + (2N - 1) onde N é o número de bits na magnitude. Existe um total de
2N+1 diferentes valores, incluindo duas representações de zero.
6
Exemplo: Sistema sinal magnitude
N = 2 bits na magnitude
n = 3 bits → total de bits incluindo o bit de sinal (magnitude e bit de sinal).

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

Faixa de valores que pode ser representada no sistema sinal-magnitude


- (2N - 1) a + (2N - 1)
Existe um total de 2N+1 diferentes valores, incluindo duas representação de zero.
Onde N é o número de bits na magnitude.
Se N = 2  - (22 – 1) = -3 a + (22 - 1) = + 3

Total de valores diferentes: 2N+1 → 22+1 = 8 valores, com duas representações


de zero. 7
Sistema de complemento de 2
O sistema mais usado para representar números binários com sinal é o sistema de
complemento de 2. Antes de saber como ele é, temos que determinar o complemento
de 1 e de 2 de um número binário.

Forma de complemento de 1

1 0 1 0 → número binário
↓↓↓↓ inverte cada bit para obter o complemento de 1
0 1 0 1 → complemento de 1 (complementa cada bit) de 1010

Forma de complemento de 2

1 0 1 0 → número binário
↓↓↓↓ inverte cada bit para obter o complemento de 1
0 1 0 1 → complemento de 1 de 1010
+ 0 0 0 1 → soma 1 para obter o complemento de 2
0 1 1 0 → complemento de 2 de 1010
8
Representação de números com sinal no sistema de complemento de 2
Sistema de complemento de 2 :
• Se o número for positivo, a magnitude é representada na forma binária direta e um
bit de sinal 0 é colocado mais a esquerda, formando um total de n bits incluindo o bit
de sinal.
Ex.: Represente o +710 no sistema de comp. de 2. Use 4 bits incluindo o bit de sinal
1112 = 710 (número sem sinal)
0111 = +710 (número com sinal representado no sistema de complemento de 2)

• Se o número for negativo, a magnitude é representada na forma de complemento


de 2.

Para determinar o número negativo deve-se primeiro obter a representação positiva


do número e depois calcular o complemento de 2.

Ex: 0111 = +710 (número com sinal ; 4 bits incluindo o bit de sinal)
↓↓↓↓

1000 (inverte cada bit)


+ 0001 (soma 1)
1001 (representação de -710 no sistema de complemento de 2)
9
Exemplo:
Representação de números com sinal usando complemento de 2
Use 5 bits incluindo o bit de sinal
Número positivo → 01111 → +15
(magnitude corresponde ao equivalente binário direto)

Número negativo → 10001 → -15


(representado na forma de complemento de 2)

Determinando o negativo de 01111 (+15) no sistema de complemento de 2.

01111 = +1510 (n=5 bits incluindo o bit de sinal)


↓↓↓↓↓

10000 (inverte cada bit)


+ 00001 (soma 1)
10001 (representação de -1510 no sistema de complemento de 2)

10
Extensão de sinal
Os registradores são de 4, 8, 12, 16, 32 ou 64 bits.
Se precisarmos armazenar um número positivo de cinco bits em um
registrador de 8 bits, simplesmente acrescentamos zeros à frente. O MSB (bit
de sinal) ainda é 0, indicando um valor positivo.
01001 (valor do +9)
000 01001 Zeros acrescentados para obter 8 bits

bit de sinal

Se precisarmos armazenar um número negativo de cinco bits em um


registrador de 8 bits, simplesmente acrescentamos 1s à frente. O MSB (bit de
sinal) ainda é 1, indicando um valor negativo.
00111 +7
11001 - 7 complemento de 2 do +7
111 11001 Uns (1 s) acrescentados para obter 8 bits

bit de sinal
11
Negação

Negação é a operação de conversão de um número positivo em seu


equivalente negativo ou de um número negativo em seu equivalente
positivo. Quando os números binários com sinal estão representados no
sistema de complemento de 2, a negação é obtida pela operação do
complemento de 2.

0000 1001 +9
Faz o complemento de 2 (negação) 1111 0111 -9
Faz a negação novamente 0000 1001 +9

A operação de negação altera o número para seu equivalente oposto.

12
Caso especial na representação de complemento de 2

Sempre que um número com sinal tiver 1 no bit de sinal e todos os bits de
magnitude forem 0, seu equivalente decimal será - 2N , em que N é o número de
bits (zeros) na magnitude.

1000 = -23 = - 8
10000 = -24 = - 16 equivalente decimal -2N
100000 = -25 = - 32
5 zeros

13
Exemplo: Sistema de complemento de 2
Use 3 bits incluindo o bit de sinal
N = 2 bits na magnitude

0 0 0 +0
0 0 1 +1
corresponde ao equivalente binário direto
0 1 0 +2
0 1 1 +3
1 0 0 -4 Caso especial - 2N
1 0 1 -3 corresponde a forma de complemento de 2 do seu
1 1 0 -2 equivalente positivo
1 1 1 -1

Faixa de valores que pode ser representada no sistema de complemento de 2:


- 2N a + (2N – 1)
Existe um total de 2N+1 diferentes valores, incluindo uma representação de zero.
Onde N é o número de bits na magnitude

Se N = 2  - 22 = - 4 a + (22 - 1) = + 3
Total de valores diferentes: 2N+1 → 22+1 = 8 diferentes valores
14
6.3- ADIÇÃO NO SISTEMA DE COMPLEMENTO DE 2

• Executa-se a soma binária normal nos bits de magnitude.


• Os bits de sinal são somados com os bits de magnitude.
• Se a soma dos bits de sinal resultar em um bit de carry 1, ele é
desconsiderado.
• Caso o resultado seja positivo, o número estará no formato de binário
puro (direto).
• Se o resultado for negativo, o número estará na forma de complemento
de 2.

15
Problema 6.9
Use 8 bits incluindo o bit de sinal. Sistema de complemento de 2
(b) Some +14 com -17
1410 = 1110 (sistema binário puro)
+1410 = 0000 1110 (sistema de comp. 2)
1710 = 1 0001 (sistema binário puro)
+1710 = 0001 0001 (sistema de comp. 2) faz a negação para obter -1710
-1710 = 1110 1111
11 1
+14 → 00001110
-17 → + 11101111
0 1 1 1 1 1 1 0 1 → número negativo, portanto está forma de
↗ complemento de 2
despreza o último carry
Quando o resultado for um número negativo, para determinar o seu equivalente
decimal negativo deve fazer a operação de negação.
11111101
↓↓↓↓↓↓↓↓
00000010
+ 00000001
Negação 0 0 0 0 0 0 1 1 → +3 , portanto 1 1 1 1 1 1 0 1 = -310 16
Problema 6.9

Use 8 bits incluindo o bit de sinal. Sistema de complemento de 2


(d) Some - 48 com -80
4810 = 11 0000 (sistema binário puro)
+ 4810 = 0011 0000 (sistema de comp. 2 ) faz a negação para obter -4810
- 4810 = 1101 0000

8010 = 101 0000 (sistema binário puro)


+ 8010 = 0101 0000 (sistema de comp. 2) faz a negação para obter -8010
- 8010 = 1011 0000

111
- 48 → 11010000
- 80 → + 10110000
1 1 0 0 0 0 0 0 0 → -27 = -128 → caso especial

despreza o último carry (carry devido a soma dos bits de sinal é desprezado)

17
6.4- SUBTRAÇÃO NO SISTEMA DE COMPLEMENTO DE 2

A subtração utilizando o sistema de complemento de 2 envolve, na verdade, a


operação de adição.
• Realiza-se a operação de negação do subtraendo.
• Adiciona-se o número obtido ao minuendo.
• A resposta representará a diferença entre ambos.

X  ( A)  ( B) → X  (A)  (B)

Para obter (-B) acha o complemento de 2 de B, ou seja, faz a negação de B.

A operação de negação altera o número para seu equivalente oposto.

18
Problema 6.9
Use 8 bits incluindo o bit de sinal. Sistema de complemento de 2
(e) Subtraia +16 de +17 → +17 +17
- (+16) + (-16)

1710 = 1 0001 (sistema binário puro) subtraendo


+1710 = 0001 0001 (sistema de comp. 2 )

1610 = 1 0000 (sistema binário puro)


+1610 = 0001 0000 (sistema de comp. 2) faz negação para obter -1610
-1610 = 1111 0000

111
+17 → 00010001
-16 → + 1 1 1 1 0 0 0 0
1 0 0 0 0 0 0 0 1 → número positivo , portanto está na forma binária direta
Quando o resultado for um número positivo basta fazer a
conversão de binário para decimal → 0 0 0 0 0 0 0 1 = +1

despreza o último carry (carry devido a soma dos bits de sinal é desprezado)

19
Problema 6.9
Use 8 bits incluindo o bit de sinal. Sistema de complemento de 2

(h) Subtraia -36 de -15 -15 -15


- (-36) + (+36)
-15 - (-36) → -15 + (+36)
subtraendo
1510 = 11112 sistema binário puro
+ 1510 = 0000 1111 sistema de comp. 2 , faz negação para obter -1510
- 1510 = 1111 0001

3610 = 10 01002 sistema binário puro


+ 3610 = 0010 0100 sistema de comp. 2

11
- 15 → 11110001 colocar o sinal +
+ 36 → + 00100100
1 0 0 0 1 0 1 0 1 → + 21

despreza o último carry (carry devido a soma dos bits de sinal é desprezado)

20
Overflow aritmético
A condição de overflow pode ocorre apenas quando dois números positivos
ou dois números negativos são somados.
Quando somamos dois números de mesmo sinal pode produzir um resultado
incorreto, porque a resposta pode requerer mais bits e, portanto, ocorre um
overflow (transbordamento) na posição do bit de sinal.

Método para detectar overflow no sistema de completo de 2


Comparar os bits de sinal das parcelas com o bit de sinal do resultado

Um overflow pode ocorre sempre que os números que estão sendo somados
são ambos positivos (bit de sinal 0) e o resultado é negativo (bit de sinal 1) ou
quando os números somados são ambos negativos (bit de sinal 1) e o
resultado é positivo ( bit de sinal 0).

21
Problema 6.10
Use 8 bits incluindo o bit de sinal. Sistema de complemento de 2
(a) Some +37 com +95 +37
+37 + (+95) + (+95)

3710 = 10 0101 (sistema binário puro)


+ 3710 = 0010 0101 (sistema de comp. 2)

9510 = 101 1111 (sistema binário puro)


+ 9510 = 0101 1111 (sistema de comp. 2)


11 1 1111 Para verificar se ocorrer overflow: compara
+37→ 00100101 os bits de sinal das parcelas com o do
+95→ + 01011111 resultado
10000100
ocorreu overflow, porque a soma de dois números positivos
gerou um número negativo

22
Problema 6.10
Use 8 bits incluindo o bit de sinal. Sistema de complemento de 2
(b) Subtraia +37 de -95 -95
+ (-37)
-95 - (+37) → -95 + (-37)
subtraendo
9510 = 101 1111 (sistema binário puro)
+ 9510 = 0101 1111 (sistema de comp. 2) faz negação para obter -9510
- 9510 = 1010 0001

3710 = 10 0101 (sistema binário puro)


+ 3710 = 0010 0101 (sistema de comp. 2) faz negação para obter -3710
- 3710 = 1101 1011

11 Para verificar se ocorrer overflow: compara


-95 → 10100001 os bits de sinal das parcelas com o do
-37 → + 11011011 resultado
1 0 1111100
despreza ocorreu overflow, porque a soma de dois números
o último carry negativos gerou um número positivo
(carry devido a soma dos bits de sinal é desprezado)
23
6.7- ADIÇÃO BCD

• Usando a adição binária comum, some os códigos BCD para cada dígito.
• Para aquelas posições em que a soma for menor ou igual a 9, nenhuma
correção é necessária. A soma estará no formato BCD adequado.
• Quando a soma de dois dígitos for maior que 9, o fator de correção 0110
deverá ser somado ao resultado para obter uma resposta BCD válida.

** Soma 0110 (seis) para pular os seis códigos inválidos.

24
Exemplo Quatro bits equivale a 1 nibble

BCD carry = 1 entre nibble


decimal precisa de correção

0 1100 1111 ← carry


0738 0000 0111 0011 1000
+ 0648 → + 0000 0110 0100 1000
--------
1386 --------------------------------
0000 1101 1000 0000

↓ Correção

1 1
0000 1101 1000 0000
+ 0000 0110 0000 0110 ← Correção
-----------------------------------
0001 0011 1000 0110

25
Problema 6.13
Nibble → grupo de 4 bits
(d) decimal BCD
385 11 0 0
+ 118 0011 1000 0101
-------- → + 0001 0001 1000
503 -------------------------------
0100 1001 1101

1 1 1
0100 1001 1101
+ 0 0 0 0 0 0 0 0 0 1 1 0 ← Correção
---------------------------------
0100 1010 0011

1
0100 1010 0011
+ 0 0 0 0 0 1 1 0 0 0 0 0 ← Correção
--------------------------------
0101 0000 0011

resposta final
26
6.8- ARITMÉTICA HEXADECIMAL

Adição hexadecimal - pag. 266


• Somam-se os dígitos hexa em decimal.
• Se a soma for menor ou igual 15, o resultado pode ser expresso como
um dígito hexa.
•Se a soma for maior que 15, subtraia 16 e transporte um carry 1 para a
posição do próximo dígito.

Exemplo 1 Exemplo 2
↙ carry 8 1
A6
1 + 8 11
+56
------- B8 ------- + 2
FC 16 -----
+28 →
------- - 16 14
10 6 E0 ------ E16
+ 5 +6 1 0
---- ---- ↖ carry 1 para a próxima
15 12 posição 27
Exemplo 3



2ª 1ª
1 1 F 15 1 1
0 F F + F + 15 F 15
------- ----- + F + 15
+0 F F → 30 ------- -----
---------- - 16 31
1 F E ------
1 1 4 decimal - 16
------
1 E hexa 1 1 5 decimal
↖ carry 1 para a 1 F hexa
próxima posição ↖ carry 1 para a
próxima posição

28
Subtração hexadecimal - pag. 267

Usa-se o mesmo método utilizado para os números binários, que é:


• Determine o complemento de 2 do subtraendo em hexa.
• Some o minuendo com o complemento de 2 do subtraendo;
• Qualquer carry na posição MSD deve ser desprezado.

29
Como obter o complemento de 2 de um número hexadecimal:
Determine o complemento de 2 de 51F16

Procedimento 1
5 1 F número hexa
0101 0001 1111 converta em binário
1010 1110 0000 complemento de 1
+ 0000 0000 0001 some 1 ao LSB
-----------------------
1010 1110 0001 complemento de 2
A E 1 converta novamente em hexa
Procedimento 2
Subtraia cada dígito hexa de F ; em seguida, some 1 ao LSD (dígito menos
significativo).
F F F
-5 -1 -F subtrai cada dígito do número de F
--------------------
A E 0 → complemento de 1
+ 0 0 1 some 1 ao LSD
------------------
A E 1 → complemento de 2 de 51F
30
Exemplo:

Subtraia 2B716 de 3FA16 , faça em hexadecimal

3FA
- 2B7

Devemos determinar o complemento de 2 do subtraendo primeiro.

Usando o procedimento 2

F F F
-2 -B -7 subtrai cada dígito do número de F
--------------------
D 4 8 → complemento de 1
+ 0 0 1 some 1 ao LSD para obter o complemento de 2
-------------------
D 4 9 → complemento de 2 de 2B7

31
Depois some o minuendo ao 3ª 2ª 1ª
complemento de 2 do subtraendo → 1 1
3 F A
+ D 4 9
Despreza ---------------
o último carry 1 1 4 3 hexa

Como obter 1 4 3 hexa

3ª 2ª 1ª
1 1 | 1 1 |
| | A 10
3 3 F 15 + 9 + 9
+ D + 13 | + 4 + 4 | ------- -----
------- ----- | ------- ----- | 1 3 19
1 1 17 | 1 4 20 | - 16
- 16 | - 16 | ------
------ | ------ | 1 3
1 1 1 4
| | ↖ carry
| ↖ carry | para a próxima
| | posição
32
Representação hexadecimal de números com sinal - pag. 268
É útil reconhecer se um valor hexa representa um número positivo ou
negativo, quando o dado consiste de números com sinal.

• Para um dado valor negativo, o bit de sinal do número binário será 1, o


que sempre tornará o MSD do número hexa maior ou igual a 8.
• Quando o dado tem valor positivo, o bit de sinal será 0, sendo o MSD do
número hexa menor ou igual a 7.
Números com sinal

- 27 (corrigir)

Obs.:- Quando o MSD for maior ou igual a 8, o número representado será negativo,
portanto ele estará representado no sistema de complemento de 2. Use a operação
de negação para converter o número negativo em positivo para determinar o
equivalente decimal.
Problema 6.16 e 6.17- fazer 33
Quando o MSD de um número hexadecimal com sinal for maior ou igual a 8, o número
representado será negativo, portanto ele estará representado no sistema de
complemento de 2. Use a operação de negação para converter o número negativo em
positivo para determinar o equivalente decimal.

Exemplo:
Determine o equivalente decimal do número hexa com sinal E516 .
Como o MSD é maior que 7 → número negativo. Portanto o número está na forma de
complemento de 2.

Solução: Usando o procedimento 2


Para determinar o equivalente decimal: operação de negação
F F
- E -5 subtrai cada dígito de F
------------
1 A → complemento de 1
+ 0 1 → some 1 ao LSD
-----------
1 B16 → complemento de 2 (positivo correspondente)

1 B16 = 1 x 161 + 11 x 160 = + 2710

Portanto E516 → - 2710


34
6.9- Circuitos Aritméticos

Unidade lógica e aritmética


• Uma unidade lógica e aritmética (ULA) recebe os dados armazenados na
memória e executa operações aritméticas e lógicas com instruções
provenientes da unidade de controle.

Registrador A
dados

instruções

dados

Figura 6.4- Blocos funcionais de uma ULA


35
• A unidade de controle é instruída a adicionar um número que está na
memória a um armazenado no registrador acumulador (registrador A) .
• O número é transferido da memória para o registrador B.
• O número no registrador B e o número do registrador acumulador são
somados no circuito lógico e o resultado é transferido para o acumulador
para depois ser transferido para outro destino.

Registrador A
dados

instruções

dados

36
6.10- Somador Binário Paralelo
Computadores e calculadoras realizam operações de adição sobre dois números de cada
vez, sendo que cada número binário pode ter vários dígitos binários.
Carry da posição
anterior

adição de
três bits

resultado

Figura 6.5- Processo típico de uma adição binária

• Em cada passo desse processo de adição, realizamos a adição de três bits:


o bit da 1ª parcela, o da 2ª parcela e o carry proveniente da posição anterior.
• O resultado da adição produz dois bits: um da soma e um de carry a ser somado
aos bits da próxima posição.
• Assim se projetarmos um circuito lógico que possa duplicar esse processo, então o
que teremos a fazer é usar o mesmo circuito para cada posição de bit. Esse circuito
lógico é denominado somador completo (full adder, FA).
37
Projetaremos um circuito lógico que realiza a adição de três bits (bit da 1ª parcela, bit
da 2ª parcela e o carry proveniente da posição anterior) e que produzirá como
resultado dois bits: um bit soma e um bit carry a ser somado aos bits da próxima
posição. Então o que teremos a fazer é usar o mesmo circuito para cada posição de bit.


parcela

carry Carry posição anterior

soma
1ª parcela

Figura 6.6 - Diagrama em blocos de um circuito somador paralelo de cinco bits utilizando
somadores completos (full adder, FA) .
38
CIN = Carry in
6.11- Projeto de um Somador Completo COUT = Carry out

B
COUT
Construa uma tabela-verdade com: ↓
• Três entradas A, B e CIN CIN
• Duas saídas S e COUT
Soma

Tabela-verdade - Somador Completo A

Cout CIN
FA

S
A
S  ABCIN  ABC IN  ABC IN  ABC IN
COUT  ABCIN  ABCIN  ABC IN  ABCIN
39
Método algébrico para simplificar:

S  A.BCIN  ABC IN  AB.C IN  ABCIN


S  A( BCIN  BC IN )  A( BC IN  BCIN )
B  CIN B  CIN
S  A( B  CIN )  A( B  CIN )
X X Fazendo→ X  B  CIN
S  AX  A X  A  X
S  A  B  CIN   A  B  CIN
S  A  B  CIN

COUT  ABCIN  ABCIN  ABC IN  ABCIN repete repete


↓ ↓
COUT  ABCIN  ABCIN  ABC IN  ABCIN  ABCIN  ABCIN

COUT  BCIN ( A  A)  ACIN ( B  B)  AB(C IN  CIN )


COUT  BCIN  ACIN  AB 40
O circuito completo com as entradas A, B e CIN e as saídas S e COUT representa
o somador completo (FA).

S  A  B  CIN

COUT  BCIN  ACIN  AB


Carry out (Cy) é o valor que não cabe na
representação da ordem de bits a ser
somada e que é transportado para a
soma dos bits de ordem imediatamente
superior.

41
Ou Outro projeto do somador completo (FA).

COUT  ABCIN  ABCIN  ABC IN  ABCIN

COUT  CIN ( AB  AB)  AB(C IN  CIN )


A B 1

COUT  CIN ( A  B)  AB

S  A  B  CIN

A A B
B S S  A  B  CIN
Cin
CIN ( A  B)
CIN
Cout COUT  CIN ( A  B)  AB

AB
42
Simplificação com o mapa K

Usando o mapa K para obter as equações booleanas simplificadas de S e COUT .

A B Cin S Cout
0 0 0 0 0
0 0 1 1 0
0 1 0 1 0
0 1 1 0 1
1 0 0 1 0
1 0 1 0 1
1 1 0 0 1
1 1 1 1 1

A expressão para S não pode ser simplificada usando o mapa K, porque não tem 1s
adjacentes.

43
Meio somador
Um FA (somador completo) opera com três entradas para gerar uma soma e
carry como saídas. Em alguns casos, é necessário um circuito que some apenas
dois bits de entrada, para gerar uma soma e um carry como saídas. Um
exemplo seria a adição dos bits LSB de dois números binários nos quais não há
carry de entrada.
Um circuito lógico pode ser projetado para receber dois bits de entrada, A e B e
gerar duas saídas uma soma (S) e um carry (COUT). Esse circuito é denominado
meio somador (half adder, HA). B

Problema 6.19 – Projeto um circuito lógico que funcione


S
como um meio somador. Meio
Somador

Solução: Cout

A B S COUT
0 0 0 0 S  AB  AB  A  B A
A

0 1 1 0 S
B
1 0 1 0 COUT  AB
A
1 1 0 1 Cout
B
44
6.14- Somador Paralelo em Circuito Integrado

• O somador paralelo mais comum é um dispositivo de quatro bits, que


contém quatro FAs interligados e um circuito de carry antecipado.
• CIs 7483A, 74LS83A, 74LS283, e 74HC283 são somadores paralelos de quatro
bits.
• As entradas do CI são dois números de quatro bits, A3A2A1A0 e B3B2B1B0 , e o
carry (C0) na posição LSB. As saídas são os bits do resultado da soma,
3 2 1 0 (S3S2S1S0), e o carry (C4) proveniente da posição MSB.

Carry proveniente
da posição MSB ↘ A3 A2 A1 A0
C4 C0 carry na posição LSB
3 2 1 0 B3 B2 B1 B0

(Saída Soma) S3S2S1S0 → 45


Conexão em cascata de somadores paralelos

Somadores paralelos podem ser conectados em cascata para implementar a


adição de números binários maiores, nesse caso, dois números de 8 bits.

Faz C0 = 0

A3 A2 A1 A0 A3 A2 A1 A0
C4 C0 C4 C0
 3  2  1  0 B3 B2 B1 B0 B3 B2 B1 B0  3  2  1  0

CI de mais alta ordem CI de mais baixa ordem

46
6.15- Sistema de Complemento de 2

Os números positivos e negativos podem ser somados em um circuito


somador paralelo básico, quando os números negativos forem colocados na
forma do complemento de 2.

Adição – números com sinal

-3 = 1101 (comp. de 2)

(-3) reg. A
Despreza
+ (+6) reg. B o último carry Faz C0 = 0
------ A3 A2 A1 A0
+3
C4 C0
-3 = 1101 (comp. de 2) B3 B2 B1 B0 3 2  1 0

+6 = 0110
1 +6 = 0110
Despreza 1101
o último carry + 0 1 1 0 +3 = 0011
1 0011
47
Subtração
Somador paralelo realiza a subtração (A - B) utilizando o sistema de complemento de 2.
Os bits do subtraendo (B) são invertidos e faz C0 = 1 para gerar o complemento de 2.
0 1 0 0 (+4)
(+ 4) - (+ 6) = -2
(+ 4) + (- 6 ) = -2
A3 A2 A1 A0 Faz C0 = 1 para
1
C4 C0 somar + 1
(+4) = 0100  3 2 1 0 obter o compl.
B3 B2 B1 B0
(+6) = 0110 de 2 de 0110

0110 (+6)
↓↓↓↓ (inverte)
1001 (comp. 1) comp. de 1 de +6 → 1 0 0 1
1 1 1 0
1 ← C0 ← soma 1 para obter o complemento de 2 de número 0110 (+6)
0100 ← [ A ]
+ 1001 ← [ B ] ← complemento de 1 de 0110 que está armazenado no registrador B
----------
1110 ← [ ∑ ] = [ A ] + [- B ] como o bit de sinal é 1, o resultado é negativo e está na
forma de complemento de 2.
48
Adição e subtração combinadas

Um circuito completo pode realizar tanto a adição quanto a subtração.


Esse circuito somador/subtrator é controlado por dois sinais de controle,
chamados ADD e SUB.

ADD = 1 e SUB = 0 → o circuito realizará a adição dos números armazenados


nos registradores A e B → [A] + [B] . O resultado aparecerá nas saídas ∑3 a ∑0

ADD = 0 e SUB = 1 → o circuito subtrairá o número que está em B daquele


que está em A, [A] – [B] → [A] + [ B ] .
O resultado aparecerá nas saídas ∑3 a ∑0

49
Somador/subtrador paralelo, usando o sistema de complemento de 2.

2ª parcela [A] + [B]


B3 B3 B2 B2 B1 B1 B0 B0
registrador B ADD = 1 → adição
ADD
B SUB = 0
B0 ADD
Y  ADD.B  SUB.B
SUB
B3
C4
B0 SUB
[A] + [-B]
SUB=1(C0=1)→ subtração
ADD = 0
Y  ADD.B  SUB.B Y0 = ADD B0 + SUB B0
Y Y  ADD.B  SUB.B
C4 C0
3 2 1 0

1ª parcela
registrador A

Fig. 6.14 50
Problema 6.32
(a) Modifique o circuito mostrado na Figura 6.14 de forma que uma única entrada de
controle, X, seja usada no lugar de ADD e SUB. O circuito deve funcionar como um
somador, quando X = 0, e como um subtrator, quando X = 1.
(b) Em seguida, usando a álgebra booleana, simplifique cada conjunto de portas.
Desenhe o circuito resultante.

X = 0 → ADD
X = 1 → SUB

C4 C0
3210

Figura 6.14
51
Problema 6.32 2ª parcela
registrador B
Solução:
B B B B B B B B
(a) X = 0 → somar
X
X = 1 → subtrair
X = 0 → ADD = X [A] + [B] X
X X
X = 1 → SUB = X [A] + [-B] ↖
(b) X .B X .B
Y  ADD.B  SUB.B
Y
Y  X .B  X .B C4 C0
3210
Y  B X

X B Y
0 0 0 B
0 1 1 B
1 0 1 B
1 1 0 B A porta XOR funciona como um inversor controlado
52
Problema 6.32
Registrador B
Cont... Solução (b)
B3 B2 B1 B0

A porta XOR funciona como


x
um inversor controlado .

X B Y
0 0 0 B Y  B X
0 1 1 B B3 B2 B1 B0
1 0 1 B
C4 C4 74LS283
1 1 0 B C0

A3 A2 A1 A0 Σ3 Σ2 Σ1 Σ0
Quando X = 0 → soma
Quando X =1→ subtração A3 A2 A1 A0
CLK CLK CLK CLK
D D D D
Σ3 Σ2 Σ1 Σ0
Pulso
TRANSFER

53
Problema 6.23 - pag. 300
Utilizando-se registradores de quatro bits, incluindo o bit de sinal, projete um circuito
lógico que analisa os bits de sinal e produza uma saída ALTA, sempre que a condição de
overflow ocorrer. Projete este circuito para o somador.
Solução do Probl. 6.23:
Um método que pode ser usado para somadores que operam no sistema de
complemento de 2 é o de comparar os bits de sinal das parcelas com o do resultado.
Método da comparação dos bits de sinal
A condição de overflow pode
A3 B3 Σ3 Ov A3 A2 A1 A0 ocorre apenas quando dois
0 0 0 0 + B3 B2 B1 B0
________ números positivos ou dois
0 0 1 1 Σ3 Σ 2 Σ 1 Σ 0 números negativos são
0 1 0 0 somados.
0 1 1 0
Ov  A3 B 3 3  A3 B3 3 Não tem como simplificar.
1 0 0 0
1 0 1 0
1 1 0 1
1 1 1 0
OV =1 → quando dois números positivos
(negativos) são somados e gera um
resultado negativo (positivo). 54
Problema 6.53 - pag. 303

Em uma ULA típica de microprocessador, os resultados de todas as operações


aritméticas são normalmente transferidos para o registrador acumulador como na
Figura 6.14, e também são usados para controlar os estados de vários flip-flops
especiais denominados flags. Estes flags são usados pelo microprocessador quando
ele está tomando certas decisões durante a execução de certos tipos de instruções. Os
três flags mais comuns são:
C (flag de carry). Este flag é sempre igual ao carry do MSB da ULA.
S (flag de sinal). Este flag é sempre igual ao bit de sinal do último resultado da ULA
Z (flag de zero). Este flag vai para 1 sempre que o resultado da operação na ULA é zero.
Caso contrário, o flag vai para 0.
Utilizando o somador / subtrator da Figura 6.14 como se fosse uma ULA, projete o
circuito lógico que implementa estes flags. O registrador de flags deverá ser carregado
exatamente na transição positiva de TRANSFER. Desenhe o circuito.

Extra:
Ov (flag de overflow para a soma). Este flag vai para 1 sempre que o sinal do resultado
da soma for contrário ao das parcelas de mesmo sinal. (ver solução exercício 6.23)
55
Solução - Problema 6.53 - pag. 303

Z (flag de zero)→
Z = 1 → resultado ( 3  2  1  0 ) = 0
Z = 0 → resultado ( 3  2  1  0 ) ≠ 0

Z  3  2  1  0

overflow sinal zero carry

Registrador de flags

carry
Figura 6.14
sinal
zero
Overflow para a operação soma Z  3  2  1  0
(ver solução exercício 6.23).

56
Problema 6.20 – Um somador completo pode ser implementado de diversas maneiras. A
Figura 6.27 mostra como um somador completo pode ser construído de dois meios
somadores (HA).Construa uma tabela–verdade para essa configuração e observe que esse
circuito funciona como um somador completo (FA). Analise o circuito e complete a T.V.

A B Cin S1 C1 S2 C2 S Cout

57
Solução do Problema 6.20 somador completo
A B Cin S Cout
MS1 S1 MS2 0 0 0 0 0
S1 S2 S 0 0 1 1 0
A
C1 Cin C2 0 1 0 1 0
B
0 1 1 0 1
Cin C2 Cout = C1 + C2 1 0 0 1 0
1 0 1 0 1
C1 Cout 1 1 0 0 1
1 1 1 1 1

Entradas Cout
MS1 MS2 MS1 MS2
Saídas
A B Cin S1 C1 S2 C2 S Cout
meio somador
0 0 0 0 0 0 0 0 0
A B S C 0 0 1 0 0 1 0 1 0
0 0 0 0 0 1 0 1 0 1 0 1 0
0 1 1 0 0 1 1 1 0 0 1 0 1
1 0 1 0 1 0 0 1 0 1 0 1 0
1 1 0 1 1 0 1 1 0 0 1 0 1
1 1 0 0 1 0 0 0 1
1 1 1 0 1 1 0 1 1
MS2 MS2 58
Exemplo1:

Como determinar o número total de posições de memória. Cálculo em decimal.


00 primeira posição
01
02 temos 6 posições de memória
03
04
05 sexta posição

Determinando o número de total de posições de memória:


05 última posição
- 00 primeira posição
-------
05
+ 1 (+ 1 para obter o total de posições)
-----------
06 → total de posições de memória

Subtração hexadecimal
• Determine o complemento de 2 do subtraendo em hexa.
• Some o minuendo com o complemento de 2 do subtraendo;
• Qualquer carry na posição MSD deve ser desprezado.
59
Exemplo2:
Determinando o número de posições de memória entre 01 e 04:
Cálculo em decimal.
04 00
- 01 01
-------
03 02 4 posições de memória
+ 1 (+ 1 para obter o total de posições) 03
----------- 04
04 → total de posições de memória
05
06
09
07
- 07 08 3 posições de memória
-------
02 09
+ 1 (+ 1 para obter o total de posições)
-----------
03 → total de posições de memória

Total de posições de memória nas duas faixas:


04
+ 03
-----
07 → total de posições de memória
60
Problema 6.16 – O manual do usuário de microcomputador diz que ele tem uma faixa de
memória utilizável situada nos seguintes endereços hexa: 0200 a 03FF e 4000 a 7FD0.
Qual é o número total de posições de memória disponíveis? Dê a resposta final em
decimal.
Solução: Primeira faixa 0200 a 03FF
Determine o complemento de 2 do subtraendo em hexa.
03FF F F F F
- 0200 → - 0 -2 -0 -0 subtrai cada dígito do número de F
--------- ----------------
F D1 F1 F → complemento de 1
+ 0 0 0 1 → some 1 ao LSD para obter o complemento de 2
--------------------
F E 0 0 → complemento de 2 de 0200
Some o minuendo com o complemento de 2 do subtraendo para obter o total de
posições de memória na faixa 0200 a 03FF .
3 03 1
+ 14 03FF
+ E ------- + FE00
----- 17
-----------
- 16 1 01FF
------ + 1 (+ 1 para obter o total de posições)
1 1 -----------
Despreza 0 2 0 0 → total de posições de memória na faixa de 0200 a 03FF
o último
carry carry
61
Segunda faixa 4000 a 7FD0
Determine o complemento de 2 do subtraendo em hexa.
7FD0 → F F F F
- 4000 - 4 -0 -0 -0 subtrai cada dígito do número de F
--------- ----------------
B F1 F1 F → complemento de 1
+ 0 0 0 1 → some 1 ao LSD para obter o complemento de 2
-----------------
C 0 0 0 → complemento de 2 de 4000
Some o minuendo com o complemento de 2 do subtraendo para obter o total de
posições de memória na faixa 4000 a 7FD0
7 07 7FD0
+ 12
+ C ------- + C000
----- -----------
19 1 3FD0
- 16 + 1 (+ 1 para obter o total de posições)
------ ------------
1 3 3 F D 1 → total de posições de memória na faixa de 4000 a 7FD0
Despreza
o último carry
carry
Total de posições de memória nas duas faixas: 0200 a 03FF e 4000 a 7FD0
1
F 15
3FD1
+ 2 +-------2
+ 0200
----- ----------
17
- 16 4 1 D 1 = 4x163 + 1x162 + 13x161 + 1x160 = 1684910
------
1 1 Resposta final em decimal → 1684910 62
Problema 6.26 - Mostre os níveis lógicos de cada entrada e saída do circuito da Figura
6.11 (b) quando EC16 for somado com 4316 . (Edição 11ª )

Solução:
1 1 1 0 1 1 0 0
A3 A2 A1 A0 0 A3 A2 A1 A0
1 C4 C0 C4 C0 0
 3  2  1  0 B3 B2 B1 B0 B3 B2 B1 B0  3  2  1  0
0 1 0 0 0 0 1 1

0
Figura 6.11(b)
1110 1100 0 0 1 0 1 1 1 1
+ 0100 0011
_____________
1 0010 1111
C8 7654 3210 Conversão hexadecimal para binário
EC16 = 1110 11002 63
4316 = 0100 00112
Problema 6.26 - Mostre os níveis lógicos de cada entrada e saída do circuito da Figura
6.11 (b) quando 3548 for somado com 1038 . (Edição 10ª )

Solução:
1 1 1 0 1 1 0 0
A3 A2 A1 A0 0 A3 A2 A1 A0
1 C4 C0 C4 C0 0
 3  2  1  0 B3 B2 B1 B0 B3 B2 B1 B0  3  2  1  0
0 1 0 0 0 0 1 1

Figura 6.11

0 0 1 0 1 1 1 1

0 3548 = 3x82 + 5x81 + 4x80 = 23610


1110 1100 1038 = 1x82 + 0x81 + 3x80 = 6710
+ 0100 0011
______________ 3548 = 23610 = EC16 = 1110 11002
1 0010 1111 1038 = 6710 = 4316 = 0100 00112 64

C8 7654 3210
Problema 6.54-

0100 1001 = + 7310 Representados na forma de de complemento de 2


1010 1110 = - 82
Determine as representações de 16 bits para esses números decimais.
Solução do Prob. 6.54: ↓
0100 1001 → 0000 0000 0100 1001 = + 7310
1010 1110 → 1111 1111 1010 1110 = - 8210

Problema 6.55-
Compare as representações de 8 e 16 bits para o +73 e o - 82 no Prob. 6.54. Existe uma
regra geral que pode ser usada? Qual é?
Solução:
Se o bit de sinal for positivo (0)→ acrescentar mais 8 zeros (0s) na frente do número de
8 bits.
Se o bit de sinal for negativo (1)→ acrescentar mais 8 uns (1s) na frente do número de
8 bits.

65
Esses são os exercícios mínimos recomendados do Capítulo 6

Lista de Exercícios do Capítulo 6 - 10ª e 11ª Edição


SEÇÃO EXEMPLOS PROBLEMAS
Introdução
6.1 1
6.2 1, 2, 3, 4, 5 2, 3, 4, 5, 6, 7
6.3 8, 9
6.4 10
6.7 13
6.8 6, 7, 8, 9 14, 15, 16, 17
6.9
6.10
6.11 18, 19, 20
6.12 23
6.14 10 26
6.15 27, 28, 29, 30, 32
Aplicações em Micro 53, 54, 55

-------------------------------------------------------------------------------------------- 66