Circuitos Digitais
Rodrigo Hausen
CMCC UFABC
28 e 30 de janeiro de 2013
http://compscinet.org/circuitos
1 / 40
Multiplicao binria
Algoritmo da multiplicao: mesma idia usada na base decimal.
11011
x
101
11011
00000
+ 11011
10000111
2 / 40
Multiplicao binria
Algoritmo da multiplicao: mesma idia usada na base decimal.
11011
x
101
11011
00000
+ 11011
10000111
Note que a tabuada da multiplicao
0
0 0
1 0
2 / 40
Multiplicao binria
Algoritmo da multiplicao: mesma idia usada na base decimal.
11011
x
101
11011
00000
+ 11011
10000111
Note que a tabuada da multiplicao na base 2 muito mais fcil.
0 1
0 0 0
1 0 1
Se A tem n algarismos e B tem m algarismos, ento o produto A B
ter, no mximo,
2 / 40
Multiplicao binria
Algoritmo da multiplicao: mesma idia usada na base decimal.
11011
x
101
11011
00000
+ 11011
10000111
Note que a tabuada da multiplicao na base 2 muito mais fcil.
0 1
0 0 0
1 0 1
Se A tem n algarismos e B tem m algarismos, ento o produto A B
ter, no mximo, n + m algarismos.
2 / 40
Multiplicao binria
3 / 40
Multiplicao binria
3 / 40
Multiplicao binria
3 / 40
Multiplicao binria
3 / 40
Multiplicao binria
3 / 40
Diviso binria
4 / 40
Diviso binria
| 101
4 / 40
Diviso binria
| 101
5 / 40
Diviso binria
| 101
0
6 / 40
Diviso binria
| 101
0
7 / 40
Diviso binria
| 101
0
8 / 40
Diviso binria
| 101
01
9 / 40
Diviso binria
| 101
01
10 / 40
Diviso binria
| 101
01
11 / 40
Diviso binria
| 101
011
12 / 40
Diviso binria
| 101
011
13 / 40
Diviso binria
| 101
0110
14 / 40
Diviso binria
| 101
01101
15 / 40
Diviso binria
| 101
011011
16 / 40
Diviso binria
17 / 40
Diviso binria
Para casa: escrever, em pseudocdigo, o algoritmo da diviso binria para
nmeros naturais.
Calcular A B, onde A = an1 . . . a0 , B = bm1 . . . b0 e m n
Note que as subtraes da esquerda para a direita, so, na verdade,
subtraes do dividendo pelo divisor multiplicado por 2i , para
i = n m...0
10000111
- 10100000
-100111
| 101
18 / 40
Diviso binria
Para casa: escrever, em pseudocdigo, o algoritmo da diviso binria para
nmeros naturais.
Calcular A B, onde A = an1 . . . a0 , B = bm1 . . . b0 e m n
Note que as subtraes da esquerda para a direita, so, na verdade,
subtraes do dividendo pelo divisor multiplicado por 2i , para
i = n m...0
10000111
- 10100000
-100111
| 101
0
19 / 40
Diviso binria
Para casa: escrever, em pseudocdigo, o algoritmo da diviso binria para
nmeros naturais.
Calcular A B, onde A = an1 . . . a0 , B = bm1 . . . b0 e m n
Note que as subtraes da esquerda para a direita, so, na verdade,
subtraes do dividendo pelo divisor multiplicado por 2i , para
i = n m...0
10000111
- 1010000
110111
| 101
0
20 / 40
Diviso binria
Para casa: escrever, em pseudocdigo, o algoritmo da diviso binria para
nmeros naturais.
Calcular A B, onde A = an1 . . . a0 , B = bm1 . . . b0 e m n
Note que as subtraes da esquerda para a direita, so, na verdade,
subtraes do dividendo pelo divisor multiplicado por 2i , para
i = n m...0
10000111
- 1010000
110111
| 101
01
21 / 40
Diviso binria
Para casa: escrever, em pseudocdigo, o algoritmo da diviso binria para
nmeros naturais.
Calcular A B, onde A = an1 . . . a0 , B = bm1 . . . b0 e m n
Note que as subtraes da esquerda para a direita, so, na verdade,
subtraes do dividendo pelo divisor multiplicado por 2i , para
i = n m...0
110111
- 101000
01111
| 101
01
22 / 40
Diviso binria
Para casa: escrever, em pseudocdigo, o algoritmo da diviso binria para
nmeros naturais.
Calcular A B, onde A = an1 . . . a0 , B = bm1 . . . b0 e m n
Note que as subtraes da esquerda para a direita, so, na verdade,
subtraes do dividendo pelo divisor multiplicado por 2i , para
i = n m...0
110111
- 101000
01111
| 101
011
23 / 40
Diviso binria
Para casa: escrever, em pseudocdigo, o algoritmo da diviso binria para
nmeros naturais.
Calcular A B, onde A = an1 . . . a0 , B = bm1 . . . b0 e m n
Note que as subtraes da esquerda para a direita, so, na verdade,
subtraes do dividendo pelo divisor multiplicado por 2i , para
i = n m...0
01111
- 10100
-. . .
| 101
0110. . .
24 / 40
Diviso binria
Para casa: escrever, em pseudocdigo, o algoritmo da diviso binria para
nmeros naturais.
Calcular A B, onde A = an1 . . . a0 , B = bm1 . . . b0 e m n
Note que as subtraes da esquerda para a direita, so, na verdade,
subtraes do dividendo pelo divisor multiplicado por 2i , para
i = n m...0
01111
- 10100
-. . .
| 101
0110. . .
25 / 40
26 / 40
26 / 40
26 / 40
26 / 40
26 / 40
26 / 40
Nmeros racionais
O que acontece com os algoritmos da soma, subtrao, multiplicao
e diviso quando os nmeros sendo operados no so inteiros?
27 / 40
Nmeros racionais
O que acontece com os algoritmos da soma, subtrao, multiplicao
e diviso quando os nmeros sendo operados no so inteiros?
Sem perder a generalidade, suporemos que A e B possuem k
algarismos depois da vrgula. (Se eles no tiverem a mesma
quantidade de algarismos aps a vrgula?)
A = an1 an2 . . . a1 a0 , a1 . . . ak
B = bm1 am2 . . . b0 , b1 . . . bk
27 / 40
Nmeros racionais
O que acontece com os algoritmos da soma, subtrao, multiplicao
e diviso quando os nmeros sendo operados no so inteiros?
Sem perder a generalidade, suporemos que A e B possuem k
algarismos depois da vrgula. (Se eles no tiverem a mesma
quantidade de algarismos aps a vrgula?)
A = an1 an2 . . . a1 a0 , a1 . . . ak
B = bm1 am2 . . . b0 , b1 . . . bk
Caso mais fcil: diviso. Note que:
A 2k
an1 an2 . . . a1 a0 a1 . . . ak
A
=
=
k
B
B2
bm1 am2 . . . b0 b1 . . . bk
27 / 40
Nmeros racionais
O que acontece com os algoritmos da soma, subtrao, multiplicao
e diviso quando os nmeros sendo operados no so inteiros?
Sem perder a generalidade, suporemos que A e B possuem k
algarismos depois da vrgula. (Se eles no tiverem a mesma
quantidade de algarismos aps a vrgula?)
A = an1 an2 . . . a1 a0 , a1 . . . ak
B = bm1 am2 . . . b0 , b1 . . . bk
Caso mais fcil: diviso. Note que:
A 2k
an1 an2 . . . a1 a0 a1 . . . ak
A
=
=
k
B
B2
bm1 am2 . . . b0 b1 . . . bk
Simplesmente ignore a vrgula!
Rodrigo Hausen (CMCC UFABC) Aula 3: Aritmtica, Representao de 28
dados
e 30 de janeiro de 2013
27 / 40
Nmeros racionais
Para a soma e a subtrao: como os algoritmos so copiados da
verso para nmeros na base 10, a soluo simples: ignore,
inicialmente a vrgula. Aps a soma, recoloque a vrgula no seu lugar
(conte k algarismos direita).
28 / 40
Nmeros racionais
Para a soma e a subtrao: como os algoritmos so copiados da
verso para nmeros na base 10, a soluo simples: ignore,
inicialmente a vrgula. Aps a soma, recoloque a vrgula no seu lugar
(conte k algarismos direita).
Para a multiplicao: de novo, a inspirao vem da base decimal.
Ignore, inicialmente a vrgula e, aps a multiplicao, recoloque a
vrgula no seu lugar (conte 2k algarismos direita).
Para casa:
(1) escreva as verses dos algoritmos da soma, subtrao, multiplicao e
diviso para nmeros racionais sem sinal (positivos) com k algarismos
aps a vrgula;
(2) altere os algoritmos para permitir nmeros racionais com sinal.
28 / 40
Representao numrica
Representao de nmeros no papel: usamos tantos dgitos forem
necessrios.
Limitado apenas pela quantidade de papel, tempo disponvel para
escrever os dgitos, pacincia. . .
29 / 40
Representao numrica
Representao de nmeros no papel: usamos tantos dgitos forem
necessrios.
Limitado apenas pela quantidade de papel, tempo disponvel para
escrever os dgitos, pacincia. . .
Nmero :
3.14159265358979323846264338327950288419716939937510582097
4944592307816406286208998628034825342117067982148086513282
3066470938446095505822317253594081284811174502841027019385
2110555964462294895493038196442881097566593344612847564823
3786783165271201909145648566923460348610454326648213393607
2602491412737245870066063155881748815209209628292540917153
6436789259036001133053054882046652138414695194151160943305
7270365759591953092186117381932611793105118548074462379...
Rodrigo Hausen (CMCC UFABC) Aula 3: Aritmtica, Representao de 28
dados
e 30 de janeiro de 2013
29 / 40
30 / 40
30 / 40
30 / 40
30 / 40
30 / 40
Bits e palavras
Abreviao: algarismo binrio = bit (do ingls binary digit)
31 / 40
Bits e palavras
Abreviao: algarismo binrio = bit (do ingls binary digit)
A unidade natural de processamento de um determinado sistema
chamada palavra de dado; , basicamente, uma sequncia de bits
com tamanho fixo que processada em conjunto.
MSB
LSB
{z
31 / 40
Bits e palavras
Abreviao: algarismo binrio = bit (do ingls binary digit)
A unidade natural de processamento de um determinado sistema
chamada palavra de dado; , basicamente, uma sequncia de bits
com tamanho fixo que processada em conjunto.
MSB
LSB
{z
31 / 40
Bits e palavras
Abreviao: algarismo binrio = bit (do ingls binary digit)
A unidade natural de processamento de um determinado sistema
chamada palavra de dado; , basicamente, uma sequncia de bits
com tamanho fixo que processada em conjunto.
MSB
LSB
{z
31 / 40
{z
w bits
32 / 40
{z
w bits
32 / 40
{z
w bits
32 / 40
{z
w bits
32 / 40
{z
w bits
32 / 40
=
=
=
..
.
=
=
Decimal
0
1
2
?
? = maior inteiro sem sinal com w bits
33 / 40
=
=
=
..
.
=
=
Decimal
0
1
2
?
? = maior inteiro sem sinal com w bits
33 / 40
=
=
=
..
.
=
=
=
Decimal
0
1
2
?
? = maior inteiro sem sinal com w bits
2w
33 / 40
=
=
=
..
.
=
=
=
Decimal
0
1
2
2w 2
2w 1 = maior inteiro sem sinal com w bits
2w
33 / 40
34 / 40
34 / 40
sinal
z }| {z
}|
aw 2 aw 1 . . . a2 a1 a0
{z
w bits
34 / 40
sinal
z }| {z
}|
aw 2 aw 1 . . . a2 a1 a0
{z
w bits
34 / 40
Representao sinal-magnitude
Menor nmero: 1 1 1 . . . 1 1 =
35 / 40
Representao sinal-magnitude
Menor nmero: 1 1 1 . . . 1 1 = (11
. . 11})2 =
| .{z
w 1 uns
35 / 40
Representao sinal-magnitude
Menor nmero: 1 1 1 . . . 1 1 = (11
. . 11})2 = (1 |00 .{z
. . 00} 1)2
| .{z
w
1
uns
w
1
zeros
= (2w 1 1) = 2w 1 + 1
35 / 40
Representao sinal-magnitude
Menor nmero: 1 1 1 . . . 1 1 = (11
. . 11})2 = (1 |00 .{z
. . 00} 1)2
| .{z
w
1
uns
w
1
zeros
= (2w 1 1) = 2w 1 + 1
Maior nmero: 0 1 1 . . . 1 1 = +2w 1 1
35 / 40
Representao sinal-magnitude
Menor nmero: 1 1 1 . . . 1 1 = (11
. . 11})2 = (1 |00 .{z
. . 00} 1)2
| .{z
w
1
uns
w
1
zeros
= (2w 1 1) = 2w 1 + 1
Maior nmero: 0 1 1 . . . 1 1 = +2w 1 1
Vantagens
simples de entender
simples de implementar
Desvantagens
zero tem duas representaes: 0 0 . . . 0 = +0 e 1 0 . . . 0 = 0
complica a aritmtica: necessrio tratar o sinal separadamente na
hora de fazer as contas de soma e subtrao.
35 / 40
Representao em complemento de 2
vimos que, uma maneira de fazer subtraes na forma A B era
tomar o complemento a dois B + 1 e fazer a soma A + (B + 1)
note que se B um nmero negativo, ento B = 0 B
suponha que estamos representando todos os nmeros positivos em
palavras binrias de tamanho w na forma:
0 aw 2 aw 3 . . . a1 a0
36 / 40
Representao em complemento de 2
vimos que, uma maneira de fazer subtraes na forma A B era
tomar o complemento a dois B + 1 e fazer a soma A + (B + 1)
note que se B um nmero negativo, ento B = 0 B
suponha que estamos representando todos os nmeros positivos em
palavras binrias de tamanho w na forma:
0 aw 2 aw 3 . . . a1 a0
{z
00002 =0
{z
10112 =1110
36 / 40
Representao em complemento de 2
vimos que, uma maneira de fazer subtraes na forma A B era
tomar o complemento a dois B + 1 e fazer a soma A + (B + 1)
note que se B um nmero negativo, ento B = 0 B
suponha que estamos representando todos os nmeros positivos em
palavras binrias de tamanho w na forma:
0 aw 2 aw 3 . . . a1 a0
{z
00002 =0
{z
10112 =1110
36 / 40
Representao em complemento de 2
vimos que, uma maneira de fazer subtraes na forma A B era
tomar o complemento a dois B + 1 e fazer a soma A + (B + 1)
note que se B um nmero negativo, ento B = 0 B
suponha que estamos representando todos os nmeros positivos em
palavras binrias de tamanho w na forma:
0 aw 2 aw 3 . . . a1 a0
{z
00002 =0
{z
10112 =1110
36 / 40
Representao em complemento de 2
Representao de inteiros com sinal em complemento de 2
Nmeros positivos
0 aw 2 aw 3 . . . a1 a0 = +(aw 2 aw 3 . . . a1 a0 )2
|
{z
w 1 bits
Nmeros negativos
1 aw 2 aw 3 . . . a1 a0 = (aw 2 aw 3 . . . a1 a0 + 1)2
|
{z
w 1 bits
37 / 40
Representao em complemento de 2
Representao de inteiros com sinal em complemento de 2
Nmeros positivos
0 aw 2 aw 3 . . . a1 a0 = +(aw 2 aw 3 . . . a1 a0 )2
|
{z
w 1 bits
Nmeros negativos
1 aw 2 aw 3 . . . a1 a0 = (aw 2 aw 3 . . . a1 a0 + 1)2
|
{z
w 1 bits
37 / 40
Representao em complemento de 2
Representao de inteiros com sinal em complemento de 2
Nmeros positivos
0 aw 2 aw 3 . . . a1 a0 = +(aw 2 aw 3 . . . a1 a0 )2
|
{z
w 1 bits
Nmeros negativos
1 aw 2 aw 3 . . . a1 a0 = (aw 2 aw 3 . . . a1 a0 + 1)2
|
{z
w 1 bits
37 / 40
Representao em complemento de 2
Representao de inteiros com sinal em complemento de 2
Nmeros positivos
0 aw 2 aw 3 . . . a1 a0 = +(aw 2 aw 3 . . . a1 a0 )2
|
{z
w 1 bits
Nmeros negativos
1 aw 2 aw 3 . . . a1 a0 = (aw 2 aw 3 . . . a1 a0 + 1)2
|
{z
w 1 bits
37 / 40
Representao em complemento de 2
Inteiros representados em complemento de dois em palavras de 3 bits:
011 = +310
010 = +210
001 = +110
000 = 010
38 / 40
Representao em complemento de 2
Inteiros representados em complemento de dois em palavras de 3 bits:
011 = +310
010 = +210
001 = +110
000 = 010
111 =
(11 + 1)2 = (00 + 1)2
38 / 40
Representao em complemento de 2
Inteiros representados em complemento de dois em palavras de 3 bits:
011 = +310
010 = +210
001 = +110
000 = 010
111 = 110
= (11 + 1)2 = (00 + 1)2
38 / 40
Representao em complemento de 2
Inteiros representados em complemento de dois em palavras de 3 bits:
011 = +310
010 = +210
001 = +110
000 = 010
111 = 110
= (11 + 1)2 = (00 + 1)2
(10 + 1)2 = (01 + 1)2
110 =
38 / 40
Representao em complemento de 2
Inteiros representados em complemento de dois em palavras de 3 bits:
011 = +310
010 = +210
001 = +110
000 = 010
111 = 110
= (11 + 1)2 = (00 + 1)2
= (10 + 1)2 = (01 + 1)2
110 = 210
38 / 40
Representao em complemento de 2
Inteiros representados em complemento de dois em palavras de 3 bits:
011 = +310
010 = +210
001 = +110
000 = 010
111 = 110
= (11 + 1)2 = (00 + 1)2
= (10 + 1)2 = (01 + 1)2
110 = 210
101 = 310
38 / 40
Representao em complemento de 2
Inteiros representados em complemento de dois em palavras de 3 bits:
011 = +310
010 = +210
001 = +110
000 = 010
111 = 110
= (11 + 1)2 = (00 + 1)2
= (10 + 1)2 = (01 + 1)2
110 = 210
101 = 310
100 = 410
38 / 40
Representao em complemento de 2
Inteiros representados em complemento de dois em palavras de 3 bits:
011 = +310
010 = +210
001 = +110
000 = 010
111 = 110
= (11 + 1)2 = (00 + 1)2
= (10 + 1)2 = (01 + 1)2
110 = 210
101 = 310
100 = 410
note que o intervalo de representao no simtrico
como s h uma representao para 0, possvel representar um
inteiro negativo a mais
somas/subtraes com esta representao so simples!
1 + (3) = 0 0 1 + 1 0 1 = 1 1 0 = 2
Rodrigo Hausen (CMCC UFABC) Aula 3: Aritmtica, Representao de 28
dados
e 30 de janeiro de 2013
38 / 40
Representao em complemento de 2
Maior nmero: 0 1 1 . . . 1 1 = +2w 1 1 (como sinal-magnitude)
39 / 40
Representao em complemento de 2
Maior nmero: 0 1 1 . . . 1 1 = +2w 1 1 (como sinal-magnitude)
Menor nmero: 1 0 0 . . . 0 0 = (00 . . . 00 + 1)2 = (11 . . . 11 + 1)
39 / 40
Representao em complemento de 2
Maior nmero: 0 1 1 . . . 1 1 = +2w 1 1 (como sinal-magnitude)
Menor nmero: 1 0 0 . . . 0 0 = (00 . . . 00 + 1)2 = (11 . . . 11 + 1)
= (1 |00 .{z
. . 00} 1 + 1)
w 1 zeros
39 / 40
Representao em complemento de 2
Maior nmero: 0 1 1 . . . 1 1 = +2w 1 1 (como sinal-magnitude)
Menor nmero: 1 0 0 . . . 0 0 = (00 . . . 00 + 1)2 = (11 . . . 11 + 1)
= (1 |00 .{z
. . 00} 1 + 1) = 2w 1
w 1 zeros
39 / 40
Representao em complemento de 2
Maior nmero: 0 1 1 . . . 1 1 = +2w 1 1 (como sinal-magnitude)
Menor nmero: 1 0 0 . . . 0 0 = (00 . . . 00 + 1)2 = (11 . . . 11 + 1)
= (1 |00 .{z
. . 00} 1 + 1) = 2w 1
w 1 zeros
39 / 40
Para casa
Pensar:
I
40 / 40
Para casa
Pensar:
I
40 / 40
Para casa
Pensar:
I
40 / 40
Para casa
Pensar:
I
40 / 40