aritm tica computacional n.
Download
Skip this Video
Loading SlideShow in 5 Seconds..
Aritmética Computacional PowerPoint Presentation
Download Presentation
Aritmética Computacional

Loading in 2 Seconds...

play fullscreen
1 / 74

Aritmética Computacional - PowerPoint PPT Presentation


  • 479 Views
  • Uploaded on

Aritmética Computacional. The complexity is in eye of the observer... As much as the object allows. Introdução. Humanos: sistema decimal. Computadores: sistema binário. Como representar números negativos e números reais? Qual é o maior número representável numa palavra de computador?

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about 'Aritmética Computacional' - hasad


An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript
aritm tica computacional

Aritmética Computacional

The complexity is in eye of the observer...

As much as the object allows.

introdu o
Introdução
  • Humanos: sistema decimal.
  • Computadores: sistema binário.
  • Como representar números negativos e números reais?
  • Qual é o maior número representável numa palavra de computador?
  • O que acontece quando o resultado é maior do que a capacidade do computador?
conte do
Conteúdo
  • Números com sinal e números sem sinal
  • Adição e subtração
  • Operações lógicas
  • Construção de uma unidade aritmética lógica
  • Multiplicação
  • Divisão
  • Operações em ponto flutuante
  • Lendas e falhas
  • Considerações Finais
n meros com sinal e n meros sem sinal1

0 0 0 0 1 0 1 1

Bit Mais Significativo (MSB)

Bit Menos Significativo (LSB)

Números com Sinal e Números sem Sinal
  • Base 10:
    • 2543(10)=2103+5102+4101+3100(10)
  • Base 2:
    • 1011(2)=123+022+121+120=11(10)
  • Representação no Z80 (8 bits)
faixa de n meros sem sinal para 8 bits 0 a 256 1
Faixa de números sem sinal para 8 bits: 0 a 256-1
  • 0000 0000(2) = 0(10)
  • 0000 0001(2) = 1(10)
  • 0000 0010(2) = 2(10)
  • ...
  • 1111 1100(2) = 252(10)
  • 1111 1101(2) = 253(10)
  • 1111 1110(2) = 254(10)
  • 1111 1111(2) = 255(10)
representa o de n meros
Representação de números
  • Números reais: infinitos.
  • No computador: finitos.
  • Maioria: grande quantidade de zeros à esquerda.
  • Computador: pode lidar com números até um certo tamanho.
  • Overflow: tratado pelo sistema operacional.
  • No computador: é preciso representar números com sinal.
    • Solução: usar 1 bit (sinal magnitude).
  • Primeira tentativa: o bit mais significativos (MSB) é usado para sinal.
    • Problema: duas representações para o zero
    • Solução mais usada: complemento a 2
complemento a 2
Complemento a 2
  • A regra baseia-se no fato de que a soma de um número com sua representação invertida deve ser -1:
complemento a 2 regra pr tica

X = 1111 0111

+

1

Complemento a 2: regra prática
  • Considere X = 0000 1000, o complemento a 2 de X será:

-X = 1111 1000

interface hardware software
Interface Hardware/Software
  • Endereços: sempre positivos
  • Os números vão de 0 a 27FF (Z80), e não são nunca negativos.
  • Em C: “int” e “unsigned int”.
exerc cios
Exercícios
  • Converta -15(10) para binário com representação em sinal/magnitude (16 bits).
  • Converta -15(10) para binário com representação em complemento a 2 (16 bits).
  • Qual é o número, em decimal, representado em complemento a 2 por 1010 0011(2)?
  • Usando complemento a 2 qual é a faixa de números que podem ser representados com 8 bits?
adi o e subtra o1
Adição e Subtração
  • No computador: soma semelhante à soma no sistema decimal.
  • Soma: soma cada bit, mais o vai-um.
adi o e subtra o 8 bits

Subtração com complemento a 2

0000 0111

0000 0110

0000 0111

0000 0110

0000 0111

1111 1010

-

+

adição

subtração

+

0000 1101

0000 0001

0000 0001

Adição e Subtração (8 bits)
  • 6(10) = 0000 0110(2)
  • 7(10) = 0000 0111(2)
overflow
Overflow
  • Ocorre sempre que o resultado de uma operação não pode ser representado no hardware disponível.
  • Se um número for negativo, e o outro positivo, não ocorrerá overflow.
exemplo de overflow adi o de 2 operandos positivos 8 bits

positivo

positivo

negativo

overflow

Exemplo de overflowAdição de 2 operandos positivos (8 bits)
  • Isto significa que o resultado está correto se o bit de sinal for ignorado

0100 0110

0110 0000

+

1010 0110

exemplo de overflow adi o de 2 operandos negativos 8 bits

negativo

negativo

positivo

carry

overflow

Exemplo de overflowAdição de 2 operandos negativos (8 bits)
  • Isto significa que o resultado é negativo e está em complemento a 2

1000 0000

1010 0000

+

1 0010 0000

exemplo de overflow adi o de operandos com sinais opostos 8 bits

positivo

negativo

negativo

Exemplo de overflowAdição de operandos com sinais opostos (8 bits)
  • Não ocorre overflow, o resultado é negativo e está em complemento a 2

0100 0000

1010 0000

+

1110 0000

exemplo de overflow adi o de operandos com sinais opostos 8 bits1

positivo

negativo

carry

positivo

Exemplo de overflowAdição de operandos com sinais opostos (8 bits)
  • Não ocorre overflow, o carry é ignorado e o resultado é positivo

0110 0000

1100 0000

+

1 0010 0000

interface hardware software1
Interface Hardware/Software
  • Na ocorrência de overflow: a máquina precisa decidir como tratá-lo.
    • Linguagem C: não toma conhecimento do overflows. A tarefa é do programador.
    • FORTRAN: trata o overflow
exerc cios1
Exercícios
  • Faça as operações aritméticas abaixo utilizando números binários de 8 bits e complemento a 2:
    • +9 + 4
    • +9 - 4
    • -9 + 4
    • -9 - 4
opera es l gicas1
Operações Lógicas
  • Em muitas aplicações é necessário processar bits isolados dentro de uma palavra  operações lógicas
  • Shifts: deslocamento à esquerda ou à direita  instruções rlc, rrc, rl, rr
    • Ver apostila de laboratório: Aula 06 – Instruções de Rotação e Funções
opera es and e or
Operações AND e OR
  • Operação AND: atua bit a bit, deixando 1 como resultado somente no caso de ambos os bits correspondentes dos operandos serem 1 (aplicação de máscara)
  • Operação OR: também atua bit a bit colocando 1 no resultado se qualquer um dos bits correspondentes do operando for 1.
introdu o1
Introdução
  • Representa os músculos do computador: realiza operações aritméticas como a adição e a subtração ou operações lógicas como AND e OR
  • A partir de agora mostrar-se-á como construir uma UAL para realizar as quatro operações acima
blocos construtivos b sicos

c

a

c

a

b

c

a

b

d

0

a

c

b

1

Blocos Construtivos Básicos

NOT (Inversora)

AND

OR

MultiplexadorSe d==0, c=a senão c=b

uma ual de 1 bit
Uma UAL de 1 Bit
  • Unidade lógica de 1 bit:
  • Operação = 0 ou 1  AND ou OR.
somador de 1 bit
Somador de 1 bit
  • Soma A + B + “vem 1”
  • Gera Resultado e “vai um”
  • Tabela Verdade:
exerc cio

+

Exercício
  • Gerar a unidade lógica a seguir:

CarryIn

a

Soma

b

CarryOut

exerc cios2
Exercícios
  • Alterar a UAL anterior para que ela gere o valor 0. Dica: a maneira mais fácil é expandir o multiplexador controlado pela linha Operação.
  • Como projetar uma UAL de 32 bits utilizando uma UAL de 1 bit?
subtra o
Subtração
  • A subtração é obtida somando-se o minuendo ao complemento a 2 do subtraendo, ou seja,
  • O circuito ao lado inverte o valor de b. Falta ainda somar 1 ao valor de b invertido.
  • Como fazê-lo?
subtra o1
Subtração
  • Na soma o primeiro CarryIn (vem 1) é 0.
  • O que acontece de fizermos o primeiro CarryIn = 1?
overflow1
Overflow
  • Como fazer a detecção de overflow?
    • Leia o tópico “Adaptação da UAL de 32 bits para o MIPS” e faça o exercício 4.23 do livro texto.
problema
Problema
  • Qual é o problema de uma UAL projetada como a anterior?
carry lookahead
Carry Lookahead
  • Com que velocidade podemos somar dois operandos de 32 bits?
    • Observe que as entradas a e b podem ser perfeitamente determinadas a qualquer tempo, mas a entrada CarryIn de um determinado somador de 1 bit depende do resultado da operação realizada no somador de 1 bit vizinho.
    • Solução:
      • CarryIn1=B0CarryIn0+a0CarryIn0+a0b0 ou
      • C1=b0c0+a0.c0+a0b0
      • C2=b1c1+a1c1+a0b0
carry lookahead1
Carry Lookahead
  • Problema deste método: circuito ainda complexo para cálculos de muitos bits e portanto caro.
  • Qual a solução?
    • Método de propagador e gerador. Veja livro texto.
exemplo como na pr tica
Exemplo: como na prática

multiplicando

1000

x 1001

1000

0000

0000

1000____

1001000

multiplicador

  • Número de dígitos: multiplicando + multiplicador.
  • 32 bits x 32 bits = 64 bits.

produto

algoritmo
Algoritmo
  • Como na prática
  • Simplesmente coloque um cópia do multiplicando (1 x multiplicando) no lugar apropriado, se o digito do multiplicando for igual a 1, ou
  • Coloque 0 (0 x multiplicando) no lugar apropriado, se o digito do multiplicando for igual a 0;
  • Veremos a seguir 3 versões do algoritmo de multiplicação para 32 bits (32 x 32 bits)
algoritmo 1 vers o
Algoritmo: 1ª Versão

início

1. teste do

Multiplicador0

Multiplicador0=1

Multiplicador0=0

1a. Produto = Produto + Multiplicando

2. desloque Multiplicando 1 bit à esquerda

3. desloque Multiplicador 1 bit à direita

não

32 repetições?

sim

Fim

exerc cio1
Exercício
  • Usando números de 4 bits, com o intuito de economizar espaço, multiplique 210 por 310 ou 00102 por 00112.
  • Valores iniciais:
    • Multiplicando = 0000 0010
    • Multiplicador = 0011
    • Produto = 0000 0000
desvantagens
Desvantagens
  • UAL de 64 bits.
  • 2 registradores de 64 bits
  • Próxima versão:
    • Metade dos bits do multiplicando da primeira versão são sempre zero, de modo que somente metade deles poderia conter informações úteis. A segunda versão utiliza-se desta informação para melhorar a performance da multiplicação.
algoritmo 2 vers o
Algoritmo: 2ª Versão

início

1. teste do

Multiplicador0

Multiplicador0=1

Multiplicador0=0

1a. Some o multiplicando à metade

esquerda do produto

2. desloque o registrador de Produto 1 bit à direita

3. desloque o registrador Multiplicador 1 bit à direita

sim

não

32 repetições?

Fim

exerc cio2
Exercício
  • Multiplique 00102 por 00112 usando a segunda versão do algoritmo de multiplicação.
  • Valores iniciais:
    • Multiplicando = 0010
    • Multiplicador = 0011
    • Produto = 0000 0000
vers o final do algoritmo de multiplica o
Versão Final do Algoritmo de Multiplicação
  • O registrador reservado ao produto desperdiça tanto espaço quanto o do multiplicador: à medida que o desperdício de espaço do produto se reduzia, a mesma coisa acontecia com o multiplicador.
algoritmo 3 vers o
Algoritmo: 3ª Versão

início

1. teste do

Produto0

Produto0=1

Produto0=0

1a. Some o multiplicando à metade

esquerda do produto

2. desloque o registrador de Produto 1 bit à direita

32 repetições?

não

sim

Fim

hardware 3 vers o
Hardware: 3ª Versão

Vantagens:

ULA de 32 bits.

Apenas 1 registrador de 64 bits.

exerc cio3
Exercício
  • Multiplique 00102 por 00112 usando a terceira versão do algoritmo de multiplicação.
  • Valores iniciais:
    • Multiplicando = 0010
    • Produto = 0000 0011
divis o

Divisão

6

Divide et impera.

Versão latina da velha máxima política “Divida e governe”, citada por Maquiavel em 1532

divis o1
Divisão
  • A operação recíproca da multiplicação é a divisão, operação que é ainda menos freqüente que a multiplicação e mais ardilosa. Além disso, ela oferece uma rara oportunidade de se efetuar uma operação matemática inválida: a divisão por zero.
  • dividendo = quociente x divisor + resto
divis o2
Divisão

início

1. Resto = Resto - Divisor

Teste do

Resto

Resto>=0

Resto < 0

2b. Resto = Resto + Divisor

Desloque o Quociente um 1 bit à esquerda

Q0 = 0

2a. Desloque o Quociente 1 bit à esquerda

Q0 = 1

3. Desloque o Divisor 1 bit à direita

não

33 repetições?

sim

Fim

hardware da divis o

Resto

Escrita

Hardware da Divisão

Divisor

Deslocamento à direita (64 bits)

UAL de 64 bits

Quociente Deslocamento

À esquerda (32 bits)

Teste de

controle

64 bits

exerc cio4
Exercício
  • Dividir 0000 01112 por 00102.
  • Valores iniciais:
    • Quociente = 0000
    • Divisor = 0010 0000
    • Resto = 0000 0111
opera es em ponto flutuante1
Operações em Ponto Flutuante
  • Suporte a números inteiros com e sem sinal.
  • Suporte a números fracionários: 3,1414, 0,00001 etc.
  • Notação científica: 1,34 x 103.
  • Números normalizados: 1 dígito antes do ponto decimal.
  • Números binários também podem ser normalizados.
  • Ponto decimal / ponto binário.
  • Aritmética com números normalizados: aritmética de ponto flutuante.
  • Em C: “float”.
  • Formato: 1,xxxxxxxx2 2yyyy.
representa o em ponto flutuante

32 bits

mantissa

s

expoente

23

1

8

Representação em Ponto Flutuante
  • S – sinal do número
  • F – mantissa, normalizada
  • E – expoente
  • Tamanho: -2,0  1038 a 2,0  1038.
overflow em ponto flutuante

64 bits

mantissa

s

expoente

52

1

11

Overflow em Ponto Flutuante
  • Ocorre quando o expoente é muito grande pra ser representado pelos 8 bits.
  • Underflow: O módulo do expoente negativo é muito grande.
  • Necessário números maiores: precisão dupla. Na linguagem C: double.
  • Representa números entre -2,0  10-308 a 2,0  10308.
padr o ieee 754
Padrão IEEE 754
  • Torna implícito o “1” à esquerda do ponto binário.
  • Quando o expoente for zero, o hardware não considera o primeiro bit “1” implícito, para permitir a representação do número “0” em ponto flutuante.
padr o ieee 7541
Padrão IEEE 754
  • Deve permitir comparações rápidas.
  • Seria melhor: o menor coeficiente possível valer 00000000, e o maior 11111111.
  • Modificação:
    • Subtrair 127 (peso) do exponente.
    • Representação de –1: -1+127=-1+01111111=01111110.
    • +1=+1+127=100000002.
  • Formato:
  • Peso para precisão dupla: 1.023.
exemplo 1
Exemplo 1
  • Representar o número -0,7510 em ponto flutuante e precisão simples.
  • Representar o número -0,7510 em ponto flutuante e dupla precisão.
resposta da 1
Resposta da 1
  • 1a fase: converter para binário:
    • 0,75 x 2 = 1,5  1
    • 0,5 x 2 = 1,0  1
    • -0,7510 = -0,112 = -0,11 x 20 = -1,1 x 2-1
  • Em precisão simples:
  • Resultado:
  • Representação:
exemplo
Exemplo
  • Converter a palavra abaixo em ponto flutuante para número
lendas e falhas1
Lendas e Falhas
  • Lenda: a adição em ponto flutuante é associativa; ou seja, x+(y+z)=(x+y)+z.
  • Lenda: assim como uma instrução de deslocamento à esquerda pode substituir uma multiplicação inteira por uma divisão inteira por uma potência de 2.
  • Lenda: só os matemáticos teóricos se preocupam com a precisão das operações em ponto flutuante.
bibliografia
Bibliografia

Patterson, David A. e Hennessy, John L. Organização e Projeto de Computadores: A Interface Hardware/Software. Ed. LTC, 732. Ed., 2000, Rio de Janeiro.