Download - 08 - Aritmética Computacional
-
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,01012 = -13,312510
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
na-1 na-2 ... a1 a0 for um inteiro sem sinal A, seu
valor
5
1
0
2n
i
i
iaA
-
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, an-1 = 0
O nmero 0 tratado como um nmero inteiro positivo
Usada para representar nmeros na faixa -2n 2n-1
Usada quase universalmente para representar nmeros inteiros dentro do P
10
Representao em Complemento de Dois
2
0
1
1 22n
i
i
i
n
n aaA
-
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 2n representaes distintas
2n 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 1014
0,0000000000000976 = 9,76 x 10-14
Para nmeros binrios, temos:
EBM
Sinal Mantissa
Expoente
37
-
Representao de Ponto Flutuante
Um mesmo nmero pode ser vrias representaes em ponto flutuante
24 = 0,110 x 25 = 110 x 22 = 0,0110 x 26
Para simplificar as operaes, requerido que os nmeros sejam normalizados
Enbbbb
2...1,1 210
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 210100 = 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 2128 , -0,5 x 2-127] -(1-2-24) x 2128 = 1 11111111 11111111111111111111111
-0,5 x 2-127 = 1 00000000 00000000000000000000000
Nmeros positivos:
[0,5 x 2-127 , (1-2-24) x 2128] 0,5 x 2-127 = 0 00000000 00000000000000000000000
(1-2-24) x 2128 = 0 11111111 11111111111111111111111
40
-
Representao de Ponto Flutuante
Nmeros positivos representveis
Nmeros negativos representveis
-(1-2-24) x 2128 -0,5 x 2-127 -0,5 x 2-127 -(1-2-24) x 2128 0
Overflow em Nmeros Negativos
Overflow em Nmeros Positivos
Underflow em Nmeros Negativos
Underflow em Nmeros Positivos
Nmeros inteiros representveis
0 -231 231-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 232
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 223 252
Nmero de valores 1,98 x 231 1,99 x 263
-
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