Академический Документы
Профессиональный Документы
Культура Документы
ARITMÉTICA DIGITAL:
OPERAÇÕES E CIRCUITOS
1
6.1- ADIÇÃO E SUBTRAÇÃO BINÁRIAS
Adição binária
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
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
4
6.2- REPRESENTAÇÃO DE NÚMEROS COM SINAL
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
Número negativo
Fig. 6.1
magnitude correspondem ao equivalente binário direto
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
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)
Ex: 0111 = +710 (número com sinal ; 4 bits incluindo o bit de sinal)
↓↓↓↓
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
bit de sinal
11
Negação
0000 1001 +9
Faz o complemento de 2 (negação) 1111 0111 -9
Faz a negação novamente 0000 1001 +9
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
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
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
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
X ( A) ( B) → X (A) (B)
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)
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
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.
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)
↓
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
• 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.
24
Exemplo Quatro bits equivale a 1 nibble
↓ 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
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
1ª
2ª
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
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:
3FA
- 2B7
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
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.
- 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.
Registrador A
dados
instruções
dados
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
2ª
parcela
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
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 B CIN
41
Ou Outro projeto do somador completo (FA).
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
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
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
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
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
46
6.15- Sistema de Complemento de 2
-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
49
Somador/subtrador paralelo, usando o sistema de complemento de 2.
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
3210
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
3210
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
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
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
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:
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
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 7654 3210 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
C8 7654 3210
Problema 6.54-
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
-------------------------------------------------------------------------------------------- 66