Sunteți pe pagina 1din 47

Arquitetura e Organizao de

Computadores
Aritmtica Computacional
Prof. Slvio Fernandes
UNIVERSIDADE FEDERAL RURAL DO SEMI-RIDO
DEPARTAMENTO DE CINCIAS EXATAS E NATURAIS
CURSO DE CINCIA DA COMPUTAO
Unidade Lgica e Aritmtica (ULA)
Do ingls ALU
Faz os clculos.
Tudo o mais no computador existe para atender
a essa unidade.
Trata de inteiros.
Pode tratar de nmeros de ponto flutuante
(reais).
Pode ser FPU separada (coprocessador
matemtico).
Pode estar em chip de FPU separado (486DX +).
2
Unidade Lgica e Aritmtica (ALU)
3
Representao de Nmeros Inteiros
No sistema de numerao binria, possvel
representar nmeros inteiros negativos
usando:
Dgitos 0 e 1
Sinal de subtrao
Vrgula
Exemplo:
-1101,0101
2
= -13,3125
10
4
Representao de Nmeros Inteiros
Para armazenar e processar nmeros inteiros
negativos no computador, so usados apenas
os dgitos 0 e 1
Se uma sequencia de n bits de dgitos binrios
n
a-1
n
a-2
... a
1
a
0
for um inteiro sem sinal A, seu
valor

5

1
0
2
n
i
i
i
a A
Representao de Nmeros Inteiros
Como representar nmeros negativos?
Representao Sinal-Magnitude
Representao em Complemento de Dois
6
Representao Sinal-Magnitude
Em uma palavra de n bits
O bit mais esquerda representa o sinal do
nmero inteiro
Os n-1 bits mais direita representam a
magnitude do nmero inteiro
Exemplo:
+18 = 00010010
-18 = 10010010
7
Representao Sinal-Magnitude
H duas representaes para o zero
+0 = 00000000
-0 = 10000000
mais difcil testar se um valor igual a zero
do que no caso em que h apenas uma
representao para o zero
Por isso, essa representao raramente
usada na implementao da parte inteira de
uma ULA
8

9
Representao em Complemento de Dois

Para nmeros inteiros positivos, a
n-1
= 0
O nmero 0 tratado como um nmero inteiro
positivo
Usada para representar nmeros na faixa -2
n

2
n
-1
Usada quase universalmente para representar
nmeros inteiros dentro do P

10
Representao em Complemento de Dois


2
0
1
1
2 2
n
i
i
i
n
n
a a A
Decimal S-M C-2
+8 - -
+7 0111 0111
+6 0110 0110
+5 0101 0101
+4 0100 0100
+3 0011 0011
+2 0010 0010
+1 0001 0001
+0 0000 0000
Decimal S-M C-2
-0 1000 -
-1 1001 1111
-2 1010 1110
-3 1011 1101
-4 1100 1100
-5 1101 1011
-6 1110 1010
-7 1111 1001
-8 - 1000
Representao em Complemento de Dois
Converso complemento de 2 decimal



Converso decimal complemento de 2
-128 +2 +1 = -125
-120 =
12
Representao em Complemento de Dois
-128 64 32 16 8 4 2 1
1 0 0 0 0 0 1 1
-128 64 32 16 8 4 2 1
1 0 0 0 1 0 0 0
-128 +8
s vezes desejvel converter a
representao de um nmero inteiro com n
bits para sua representao com m bits, onde
m > n
Na representao sinal-magnitude, isso pode
ser feito facilmente
Basta mover o bit de sinal para a posio mais
esquerda e preencher as demais posies novas
com 0
13
Representao em Complemento de Dois
Representao em Sinal-Magnitude
Exemplos:
+18 = 00010010 (s-m, 8 bits)
+18 = 0000000000010010 (s-m, 16 bits)
-18 = 10010010 (s-m, 8 bits)
-18 = 1000000000010010 (s-m, 16 bits)
Esse procedimento no funciona para
nmeros inteiros negativos representados em
complemento de dois
14
Exemplos:
+18 = 00010010 (c-2, 8 bits)
+18 = 0000000000010010 (c-2, 16 bits)
-18 = 11101110 (c-2, 8 bits)
-32.658 = 1000000001101110 (c-2, 16 bits)
A regra mover o bit de sinal para a posio
mais esquerda e preencher as demais com
valor igual ao bit de sinal
15
Representao em Complemento de Dois
Exemplos:
+18 = 00010010 (c-2, 8 bits)
+18 = 0000000000010010 (c-2, 16 bits)
-18 = 11101110 (c-2, 8 bits)
-18 = 1111111111101110 (c-2, 16 bits)

16
Representao em Complemento de Dois
Negao
Para representao s-m, basta inverter o valor do
bit de sinal
Para a representao em complemento de dois:
Toma-se o complemento booleano de cada bit do
nmero
Adiciona-se 1 ao resultado
17
Representao em Complemento de Dois
Exemplos:
+18 = 00010010 (c-2)
Complemento booleano = 11101101
+1
11101110 = -18
-18 = 11101110 (c-2)
Complemento booleano = 00010001
+1
00010010 = +18

18
Representao em Complemento de Dois
Casos especiais de negao
0 = 00000000 (c-2)
Complemento booleano = 11111111
+1
100000000 = 0
Bit vai um (carry in)
- ignorado
19
Representao em Complemento de Dois
Casos especiais de negao (cont.)
-128 = 10000000 (c-2)
Complemento booleano = 01111111
+1
10000000 = -128
Anomalia se deve ao fato que uma palavra de n
bits pode conter 2
n
representaes distintas
2
n
um nmero par
Sendo representados nmeros positivos, negativos e o
0, a qtde de nmeros positivos e negativos so
diferentes

20
Representao em Complemento de Dois
Adio

1001
+0101
1110
(a) (-7) + (+5) = -2
1100
+0100
10000
(b) (-4) + (+4) = 0
0011
+0100
0111
(c) (+3) + (+4) = +7
1100
+1111
11011
(d) (-4) + (-1) = -5
0101
+0100
1001
(e) (+5) + (+4) = +9 (overflow)
1001
+1010
10011
(f) (-7) + (-6) = -13 (overflow)
21
Representao em Complemento de Dois
Subtrao
0010
+1001
1011
(a) M = 2 = 0010
S = 7 = 0111
-S = -7 = 1001
(+2) + (-7) = -5
1011
+1110
11001
(c) M = -5 = 1011
S = 2 = 0010
-S = -2 = 1110
(-5) + (-2) = -7
0111
+0111
1110
(e) M = 7
S = -7 = 1001
-S = 7 = 0111
(+7) + (+7) = 14 (overflow)
0101
+1110
10011
(b) M = 5 = 0101
S = 2 = 0010
-S = -2 = 1110
(+5) + (-2) = +3
0101
+0010
0111
(d) M = 5 = 0101
S = -2 = 1110
-S = 2 = 0010
(+5) + (+2) = +7
1010
+1100
10110
(f) M = -6 = 1010
S = 4 = 0100
-S = -4 = 1100
(-6) + (-4) = -10 (overflow)
22
Representao em Complemento de Dois
23
Representao em Complemento de Dois
Representao em Complemento de
Dois
Hardware para adio e subtrao
24
Representao em Complemento de
Dois
Multiplicao
Complexa.
Calcule produto parcial para cada dgito.
Cuidado com o valor da casa (coluna).
Some produtos parciais.
25
Representao em Complemento de
Dois
Exemplo de Multiplicao






Nota: precisa de resultado com tamanho duplo.
26
Representao em Complemento de
Dois
Hardware para Multiplicao

27
Representao em Complemento de
Dois
Multiplicao de 1101 e 1011

28
Representao em Complemento de
Dois
Fluxograma para Multiplicao

29
Representao em Complemento de
Dois
Multiplicando nmero negativos
Isso no funciona!
Soluo 1:
Converta para positivo, se for preciso.
Multiplique como antes.
Se sinais diferentes, negue a resposta.
Soluo 2:
Algoritmo de Booth.

30
Representao em Complemento de
Dois
Fluxograma do algoritmo de Booth
31
Representao em Complemento de
Dois
Exemplo do algoritmo de Booth (7 x 3)
32
Nota: usado deslocamento aritmtico para preservar o sinal
Representao em Complemento de
Dois
Exemplo do algoritmo de Booth para
negativos
33
Representao em Complemento de
Dois
Diviso
Mais complexa que a multiplicao.
Nmeros negativos so realmente maus!
Baseada na diviso longa.
34
Representao em Complemento de
Dois
Diviso de inteiros sem sinal
35
001111
1011
00001101
10010011
1011
001110
1011
1011
100
Quociente
Dividendo
Resto
Restos
Parciais
Divisor
Representao em Complemento de
Dois
Diviso de inteiros sem sinal
36
Representao de Ponto Flutuante
Usada para representar nmeros muito
grandes ou muito pequenos
Para nmeros decimais, usa-se a notao
cientfica
976.000.000.000.000 = 9,76 x 10
14

0,0000000000000976 = 9,76 x 10
-14
Para nmeros binrios, temos:

E
B M


Sinal Mantissa
Expoente
37
Representao de Ponto Flutuante
Um mesmo nmero pode ser vrias
representaes em ponto flutuante
24

= 0,110 x 2
5
= 110 x 2
2
= 0,0110 x 2
6

Para simplificar as operaes, requerido que
os nmeros sejam normalizados

E
n
b b b b

2 ... 1 , 1
2 1 0
implcito
Dgitos binrios
38
Representao de Ponto Flutuante
Expoente
polarizado
Significando
23 bits 8 bits
32 bits
Sinal da
mantissa
o sinal armazenado no primeiro bit da palavra
o primeiro bit da significando verdadeira sempre 1
- por isso no precisa ser armazenado
o valor 127 adicionado ao expoente verdadeiro,
sendo o resultado denominado Expoente Polarizado
Exemplos:

856.064

= 0,11010001 x 2
10100
= 0 10010011 10100010000000000000000
-856.064 = -0,11010001 x 2
10100
= 1 10010011 10100010000000000000000
209 x 2
-28
= 0,11010001 x 2
-10100
= 0 01101011 10100010000000000000000
-209 x 2
-28
= -0,11010001 x 2
-10100
= 1 01101011 10100010000000000000000


39
Representao de Ponto Flutuante
Intervalos de representao para 32 bits:
Nmeros negativos:
[-(1-2
-24
) x 2
128
, -0,5 x 2
-127
]
-(1-2
-24
) x 2
128
= 1 11111111 11111111111111111111111
-0,5 x 2
-127
= 1 00000000 00000000000000000000000
Nmeros positivos:
[0,5 x 2
-127
, (1-2
-24
) x 2
128
]
0,5 x 2
-127
= 0 00000000 00000000000000000000000
(1-2
-24
) x 2
128
= 0 11111111 11111111111111111111111
40
Representao de Ponto Flutuante
Nmeros positivos
representveis
Nmeros negativos
representveis
-(1-2
-24
) x 2
128
-0,5 x 2
-127
-0,5 x 2
-127
-(1-2
-24
) x 2
128
0

Overflow em
Nmeros Negativos
Overflow em
Nmeros Positivos
Underflow em
Nmeros Negativos
Underflow em
Nmeros Positivos
Nmeros inteiros
representveis
0

-2
31
2
31
-1

Overflow em
Nmeros Negativos
Overflow em
Nmeros Positivos
41
Representao de Ponto Flutuante
O underflow menos crtico que o overflow,
pois o valor pode ser aproximado para 0
No h, princpio, representao para 0
Na verdade, h um padro de bits especial para
representao do 0
O nmero mximo de valores distintos
representveis continua sendo 2
32

A representao em ponto flutuante apenas
divide esses valores em duas faixas
42
Representao de Ponto Flutuante
H uma relao estreita entre os tamanhos
dos campos reservados ao significando e ao
expoente
Para um tamanho fixo de palavra:
Se o nmero de bits reservados ao significando
aumentar, aumenta-se a preciso, mas diminui-se
a faixa de valores representveis
Se o nmero de bits reservados ao expoente
aumentar, aumenta-se a faixa de valores
representveis, mas diminui-se a preciso


43
Representao de Ponto Flutuante
Padro IEEE 754
44
Expoente
polarizado
Significando
52 bits 11 bits
64 bits
Sinal do
significando
Expoente
polarizado
Significando
23 bits
8 bits
32 bits
Sinal do
significando
Formato
Simples
Formato
Duplo
Representao de Ponto Flutuante
Sinal
Expoente Polarizado
Mantissa Valor
Formato
Simples
Formato
Duplo
0 0 0 0 0
1 0 0 0 -0
0 255 2047 0
1 255 2047 0 -
0 ou 1 255 2047 0 NaN
45
Valores especiais definidos no IEEE 754
Representao de Ponto Flutuante
Parmetros do formato IEEE 754
46
Parmetro Formato Simples Formato Duplo
Tamanho da palavra 32 64
Tamanho do expoente 8 11
Polarizao do expoente 127 1023
Expoente mximo 127 1023
Expoente mnimo -126 -1022
Tamanho da mantissa 23 52
Nmero de expoentes 254 2046
Nmero de mantissas 2
23
2
52
Nmero de valores 1,98 x 2
31
1,99 x 2
63
Referncias
STALLINGS, W. Arquitetura e organizao de
computadores: projeto para o desempenho. 8.
ed. Prentice Hall, 2009.
DELGADO, J.; RIBEIRO, C. Arquitetura de
Computadores. 2 ed. LTC, 2009.
PATTERSON, D. A. ; HENNESSY, J.L. Organizao
e projeto de computadores a interface
hardware software. 3. ed. Editora Campus,
2005.
47

S-ar putea să vă placă și