Circuitos Digitais - Ciência da Computação FACAPE

Propaganda
Conteúdo
Ciência da Computação
Soma de números binários.
Soma de números BCD.
Subtração binária.
Representação de números sinalizados.
Complemento de 1.
Complemento de 2.
Overflow.
Multiplicação binária.
Divisão binária.
Circuitos Digitais
Aritmética Binária
Prof. Sergio Ribeiro
Material adaptado das aulas de Sistemas Digitais do Prof. Dr. Marcelo Andrade da USP
Circuitos Digitais
Soma de Números Binários
Álgebra Booleana (OR)
0
0
1
1
+
+
+
+
0
1
0
1
=
=
=
=
0
1
1
1
Soma de Números Binários
Aritmética (+)
0
0
1
1
1
+
+
+
+
+
0
1
0
1
1
=
=
=
=
+
0
+0
0
0
“carry ”
1
1
0 e “vai um” = (10)
1 = 1 e “vai um” = (11)
Circuitos Digitais
3
Exemplos
1
+0
1
1
+1
10
1
+1
0
“e vai um”
1
1
+1
11
1
1
+1
1
“e vai um”
Circuitos Digitais
4
Nº 2
1
1
1
1 1 0 0 1
+
0
+1
1
Exemplos
Nº 1
1
2
1 0 1 1
1 0 0
Circuitos Digitais
1 0 0
Conferindo em decimal:
1
1
1
1
1 0 0 1
25
+ 11
+ 1 1 1 1
36
1 1
5
Circuitos Digitais
0 0 0
Conferindo em decimal:
09
+ 15
24
6
1
Exemplos
Soma de Dois Números BCD
Nº 3
Em decimal:
1
1
1
Em BCD:
Conferindo em decimal:
1
1 1,0 1 1
+ 1 0,1 1 0
3,375
+ 2,750
52
+ 43
0 1 0 1 0 0 1 0
+ 0 1 0 0 0 0 1 1
1 1 0, 0 0 1
6,125
95
1 0 0 1 0 1 0 1
Circuitos Digitais
7
Circuitos Digitais
Soma de Dois Números BCD
Soma de Dois Números BCD
Ex2:
E quando a soma for maior do que 9?
Em decimal:
Ex:
6
+7
0 1 1 0
+ 0 1 1 1
13
1 1 0 1
8
BCD para 6
BCD para 7
BCD inválido!
Em BCD:
26
+ 57
0 0 1 0 0 1 1 0
+ 0 1 0 1 0 1 1 1
83
0 1 1 1 1 1 0 1
+ 0 1 1 0
Solução:
Somar 6 (0110) ao resultado final para corrigir o código
BCD inválido e adicionar o “carry ” que será gerado!
Circuitos Digitais
adicione 6
1 0 0 0 0 0 1 1
8
9
Subtração Binária
3
Circuitos Digitais
10
Subtração Binária
Aritmética (–)
0
1
1
0
Circuitos Digitais
–0
–1
–0
–1
=
=
=
=
0
– 0
0
0
“borrow”
0
1
1 e “empresta um”
1
– 0
1
1
– 1
0
0
– 1
1
10
– 1
1
(2)
(1)
(2-1=1)
“empresta um”
(2 – 1 = 1)
11
Circuitos Digitais
12
2
Exemplos
Exemplos
Nº 1
0
Nº 2
10 1
11 10 10
1 1 0 0 1
–
–
25
– 11
1 0 1 1
0 1
Conferindo em decimal:
Conferindo em decimal:
1 1 0 0 1
14
1 1 0
11
– 25
1 0 1 1
-14
?
Circuitos Digitais
13
Números Negativos
Circuitos Digitais
14
Sistema Sinal-Magnitude
BIT DE SINAL
Bit mais significativo (MSB) = indicador de sinal:
Se MSB = 0
Se MSB = 1
+
–
Portanto, o número binário pode ser
representado por:
Sistema SinalSINAL / MAGNITUDE
Magnitude
MSB
(n-1) bits restantes
Circuitos Digitais
Não é muito utilizado!
15
Complemento de um Número
Circuitos Digitais
Complemento de um Número
Complemento de um (em binário):
1) (2n – 1) – número
ou
2) substituem-se todos os “0” por “1” e vice-versa.
Exemplo 2: complemento de 1 de 11011010
Método 1:
(28 – 1) = 255
–
11111111 (255)
11011010 (218)
00100101 ( 37)
Exemplo 1: complemento de um de 10110
Pelo método 1)
(25 – 1) = 32 – 1 = 31 ⇒ 11111 (31) – 10110 (22) = 01001 (9)
Método 2:
Comp. de 11011010 = 00100101
Pelo método 2)
Comp. de 10110 (22) = 01001 (9)
Circuitos Digitais
16
17
Circuitos Digitais
18
3
Complemento de 2
Complemento de 2
Complemento de 2 (em binário):
Método 1:
2n – número
Exemplo 2: complemento de 2 de 11011010
Método 1:
1)
(25) = 32 ⇒ 100000 (32) – 10110 (22) = 01010 (10)
2)
Comp. de 2 de 10110 = 01010
Circuitos Digitais
–
(28) = 256
Método 2:
⇒ substituem-se todos os “0” por “1” e vice-versa
(complemento de 1); e
⇒ soma-se “1” ao resultado.
100000000 (256)
11011010 (218)
00100110 ( 38)
Método 2:
Comp. de 2 de 11011010:
complemento de 1
00100101
+1
00100110
19
Circuitos Digitais
Representação de Números com
Sinal usando Complemento de 2
20
Sistema Complemento de 2
COMPLEMENTO DE 2
Bit mais significativo (MSB) = indicador de sinal:
Se MSB = 0
+
SINAL / MAGNITUDE
Se MSB = 1
–
SINAL / COMPLEMENTO DE 2
Sistema de
complemento de 2
Circuitos Digitais
21
Muito utilizado!
Circuitos Digitais
22
Sistema Complemento de 2
Sistema Complemento de 2
:: Exemplos 1
:: Exemplos 2
+13
⇒
-9
⇒
-8
⇒
Circuitos Digitais
01101
01001
01000
⇒
⇒
10110 + 1
10111 + 1
⇒
⇒
10111
11000
23
01100
⇒
+12
11010
⇒
00101 + 1
⇒
00110
⇒
10001
⇒
01110 + 1
⇒
01111
⇒
Circuitos Digitais
+6 ∴ -6
+15 ∴ -15
24
4
Subtração como soma
de complementos
Negação
Subtração = soma com o complemento do subtraendo.
A – B = A + (-B)
Em binário:
como vimos, negamos um número calculando o
seu complemento de 2.
Em decimal, por exemplo:
8
–6
2
+13 = 01101
complemento de 6 = 4
8
+4
x1 2
Circuitos Digitais
-13 = 10010 + 1 = 10011
25
Subtração por Complemento de 2
Ex1:
51
– 18
Circuitos Digitais
Subtração por Complemento de 2
Ex2:
0110011
– 0010010
18
– 51
comp. de 2: 1 1 0 1 1 1 0
0110011
+ 1101110
10100001
x
Desprezado quando
estiver à esquerda
do bit de sinal.
26
Resultado final (+33)
0010010
– 0110011
comp. de 2: 1 0 0 1 1 0 1
0010010
+ 1001101
1011111
comp. de 2: 0 1 0 0 0 0 1
Resultado final (-33)
Circuitos Digitais
27
+33
Circuitos Digitais
28
Subtração por Complemento de 2
0´s e 1´s à esquerda
Ex3:
A quantidade de 0´s colocados à esquerda de um número
positivo ou 1´s colocados à esquerda de um número negativo
não altera seu valor.
+13 = 01101
+13 = 00001101
- 13 = 10010 + 1 = 10011
- 13 = 11110011
5
– 25
Preencha com zeros à esquerda até
que os bits de sinal fiquem alinhados
000101
+ 100111
101100
Usado para representar qualquer número binário, positivo ou
negativo, com o número de bits desejado.
Circuitos Digitais
29
000101
– 011001
101
– 11001
comp. de 2: 0 1 0 1 0 0
Resultado final (-20)
Circuitos Digitais
+20
30
5
Subtração por Complemento de 2
Ex4:
Faixa completa de valores que podem ser
representados
011001
– 000101
11001
–
101
25
– 5
Representação de Números com
Sinal usando Complemento de 2
Preencha com zeros à esquerda até
que os bits de sinal fiquem alinhados
-2(n-1)
011001
+ 111011
1010100
Sendo n o número de bits
x
Desprezado quando
estiver à esquerda
do bit de sinal.
+(2(n-1) – 1)
Resultado final (+20)
Circuitos Digitais
31
Circuitos Digitais
32
Quantos números com sinal podem
ser representados utilizando 4 bits?
Exemplo
Quantos números com sinal podem ser
representados utilizando 4 bits?
– (2n-1) ⇒ + (2n-1 – 1) = 1000 (–8) ⇒ 0111 (+7)
Quantos números sem sinal podem ser
representados utilizando 4 bits?
2n = 16 ⇒ 0 → 15
Circuitos Digitais
33
Caso Especial de Complemento de 2
1000 ⇒ 0111 + 1 ⇒ 1000
?
Circuitos Digitais
34
Overflow
Também conhecido como estouro ou
transbordamento.
“Sempre que o número com sinal tiver um 1 no bit de sinal
e zero em todos os outros bits, seu equivalente decimal será
-2n, sendo n o número de bits da magnitude.”
1000 = -23 = -8
10000 = -24 = -16
Circuitos Digitais
Overflow ocorre quando o número de bits do
resultado de uma operação aritmética é maior do
que a capacidade de representação do número.
Só pode ocorrer overflow quando dois números
positivos ou dois números negativos são somados.
01000 = +8
010000 = +16
35
Circuitos Digitais
36
6
Overflow
Overflow
A adição de dois números em complemento de 2
segue duas regras:
Some os dois números e observe se ocorre o carry
(vai 1) sobre o bit de sinal e se ocorre o carry após
o bit de sinal.
Se ocorrer um e somente um dos dois carry, então
houve estouro; caso contrário o resultado da soma
está dentro do campo de definição.
Circuitos Digitais
37
Overflow
+ 0101
1010
1111
+ 5
-6
-1
+ 0110
1011
0001
+ 6
-5
1
+ 1011
1010
0101
+ -5
-6
-11
Exemplos para n = 4 bits:
+ 0101
0010
0111
+5
2
7
+ 0101
0110
1011
+5
6
11
Carry sobre o bit de sinal ⇒ overflow
Circuitos Digitais
38
Overflow
Ex: 5 + 3 = 8 (utilização de 4 bits)
Não houve carry ⇒ não overflow
+ 0101
0011
1000
⇒5
⇒3
⇒8 ?
Carry sobre o bit de sinal e
Notar: quando o bit mais significativo for 1, trata-se
de um número negativo. No caso desse exemplo
seria necessário mais um bit para representar o 8
usando a representação binária em complemento
de 2.
após ele ⇒ não overflow
Carry somente após o
bit de sinal ⇒ overflow
Circuitos Digitais
39
Complemento de 2: Estouro de
Magnitude
Circuitos Digitais
40
Multiplicação Binária
Em um sistema de complemento de dois, existe
sempre um limite para o tamanho dos números
a serem representados.
11001
x 11
11001
1 1 0 0 1+
Exemplo: quando usamos complemento de dois
com padrões de quatro bits (um para o sinal), ao
valor 9 não está associado padrão algum; por isso
não conseguimos obter uma resposta certa para a
soma 5 + 4, o resultado apareceria como -7.
Circuitos Digitais
Não houve carry ⇒ não overflow
41
1001011
25 x 3 = 75
Circuitos Digitais
42
7
Multiplicação Binária
Divisão Binária
Dividimos um número binário por 2 cada vez que
seus bits são rotacionados para a direita e o zero
é colocado no bit mais significativo.
Atenção: usar vírgula quando o bit menos
significativo for igual a 1!
10010
= 18
Multiplicamos um número binário por 2 cada vez
que seus bits são deslocados para a esquerda e
o zero é colocado no bit menos significativo.
1001
=9
10010
100100
= 18 = 9 x 2
01001
= 36 = 9 x 4 = 18 x 2
0 0 1 0 0,1
0 0 0 1 0,0 1
Circuitos Digitais
43
–
25 2
1 12
25
45
Conclusões
÷ 2 = 12,5
–
11001 10
10
1 1 0 0,1
010
–1 0
000
– 00
001
– 00
010
10
00
Circuitos Digitais
46
Exercícios
O que concluímos? Que qualquer operação
aritmética pode ser realizada em computadores
apenas através de somas (diretas ou em
complemento)!
1. 100011 ÷ 101
2. 100111 ÷ 110
3. 21 – 13
Legal, mas para que serve isso? Por enquanto,
ficamos por aqui. Mais adiante veremos como
essas propriedades serão úteis para se projetar
circuitos lógicos presentes em um processador.
Circuitos Digitais
44
Divisão Binária
11001 10
10
1100
010
–10
000
– 00
001
– 00
01
Circuitos Digitais
÷2
= 4,5 = 18 ÷ 4 = 9 ÷ 2
= 2,25 = 18 ÷ 8 = 4,5 ÷ 2
Circuitos Digitais
Divisão Binária
A B
R Q
= 9 = 18
4. 14 – 17
47
Circuitos Digitais
48
8
Download