Aritmetica Computacional

74
Prof. Cláudio Faria e Lideir Viana PUC-Minas campus de Poços de Caldas Aritmética Computacional The complexity is in eye of the observer... As much as the object allows.

Transcript of Aritmetica Computacional

  • 1. Aritmtica Computacional The complexity is in eye of the observer... As much as the object allows.

2. Introduo

  • Humanos: sistema decimal.
  • Computadores: sistema binrio.
  • Como representar nmeros negativos e nmeros reais?
  • Qual o maior nmero representvel numa palavra de computador?
  • O que acontece quando o resultado maior do que a capacidade do computador?

3. Contedo

  • Nmeros com sinal e nmeros sem sinal
  • Adio e subtrao
  • Operaes lgicas
  • Construo de uma unidade aritmtica lgica
  • Multiplicao
  • Diviso
  • Operaes em ponto flutuante
  • Lendas e falhas
  • Consideraes Finais

4. Nmeros com sinal e nmeros sem sinal 1 5. Nmeros com Sinal e Nmeros sem Sinal

  • Base 10:
    • 2543 (10) =2 10 3 +5 10 2 +4 10 1 +3 10 0 (10)
  • Base 2:
    • 1011 (2) =1 2 3 +0 2 2 +1 2 1 +1 2 0 =11 (10)
  • Representao no Z80 (8 bits)

0 0 0 0 1 0 1 1 Bit Menos Significativo (LSB) Bit Mais Significativo (MSB) 6. Faixa de nmeros 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)

7. Representao de nmeros

  • Nmeros reais: infinitos.
  • No computador: finitos.
  • Maioria: grande quantidade de zeros esquerda.
  • Computador: pode lidar com nmeros at um certo tamanho.
  • Overflow : tratado pelo sistema operacional.
  • No computador: preciso representar nmeros com sinal.
    • Soluo: usar 1 bit (sinal magnitude).
  • Primeira tentativa: o bit mais significativos (MSB) usado para sinal.
    • Problema: duas representaes para o zero
    • Soluo mais usada: complemento a 2

8. Complemento a 2

  • A regra baseia-se no fato de que a soma de um nmero com sua representao invertida deve ser -1:

9. Faixa de valores em complemento a 2 para 3 bits 0 -4 2 -2 1 3 -3 -1 111 101 011 001 010 110 100 000 10. Complemento a 2: regra prtica

  • Considere X = 0000 1000, o complemento a 2 de X ser:

-X = 1111 1000 X = 1111 0111 1 + 11. Interface Hardware/Software

  • Endereos: sempre positivos
  • Os nmeros vo de 0 a 27FF (Z80), e no so nunca negativos.
  • Em C: int e unsigned int.

12. Exerccios

  • Converta -15 (10)para binrio com representao em sinal/magnitude (16 bits).
  • Converta -15 (10)para binrio com representao em complemento a 2 (16 bits).
  • Qual o nmero, em decimal, representado em complemento a 2 por 1010 0011 (2) ?
  • Usando complemento a 2 qual a faixa de nmeros que podem ser representados com 8 bits?

13. Adio e Subtrao 2 14. Adio e Subtrao

  • No computador: soma semelhante soma no sistema decimal.
  • Soma: soma cada bit, mais o vai-um.

15. Adio e Subtrao (8 bits)

  • 6 (10)= 0000 0110 (2)
  • 7 (10)= 0000 0111 (2)

0000 0111 0000 0110 + 0000 1101 adio 0000 0111 0000 0110 - 0000 0001 subtrao 0000 0111 1111 1010 + 0000 0001 Subtrao com complemento a 2 16. Overflow

  • Ocorre sempre que o resultado de uma operao no pode ser representado no hardware disponvel.
  • Se um nmerofor negativo, e o outro positivo, no ocorrer overflow.

=0 >=0 =0 =0 no sim 1. Resto = Resto - Divisor 2b. Resto = Resto + DivisorDesloque o Quociente um 1 bit esquerdaQ0 = 0 59. Hardware da Diviso Divisor Deslocamento direita (64 bits) UAL de 64 bits Quociente Deslocamento esquerda (32 bits) Teste de controle 64 bits Resto Escrita 60. Exerccio

  • Dividir 0000 0111 2por0010 2 .
  • Valores iniciais:
    • Quociente = 0000
    • Divisor = 0010 0000
    • Resto = 0000 0111

61. Operaes em Ponto Flutuante 7 62. Operaes em Ponto Flutuante

  • Suporte a nmeros inteiros com e sem sinal.
  • Suporte a nmeros fracionrios: 3,1414, 0,00001 etc.
  • Notao cientfica: 1,34 x 10 3 .
  • Nmeros normalizados: 1 dgito antes do ponto decimal.
  • Nmeros binrios tambm podem ser normalizados.
  • Ponto decimal / ponto binrio.
  • Aritmtica com nmeros normalizados: aritmtica de ponto flutuante.
  • Em C: float.
  • Formato: 1,xxxxxxxx 2 2 yyyy .

63. Representao em Ponto Flutuante

  • S sinal do nmero
  • F mantissa, normalizada
  • E expoente
  • Tamanho: -2,010 38a 2,010 38 .

s expoente mantissa 32 bits 1 8 23 64. Overflow em Ponto Flutuante

  • Ocorre quando o expoente muito grande pra ser representado pelos 8 bits.
  • Underflow : O mdulo do expoente negativo muito grande.
  • Necessrio nmeros maiores: preciso dupla. Na linguagem C: double.
  • Representa nmeros entre -2,010 -308a 2,010 308 .

s expoente mantissa 64 bits 1 11 52 65. Padro IEEE 754

  • Torna implcito o 1 esquerda do ponto binrio.
  • Quando o expoente for zero, o hardware no considera o primeiro bit 1 implcito, para permitir a representao do nmero 0 em ponto flutuante.

66. Padro IEEE 754

  • Deve permitir comparaes rpidas.
  • Seria melhor: o menor coeficiente possvel valer 00000000, e o maior 11111111.
  • Modificao:
    • Subtrair 127 (peso) do exponente.
    • Representao de 1: -1+127=-1+01111111=01111110.
    • +1=+1+127=10000000 2 .
  • Formato:
  • Peso para preciso dupla: 1.023.

67. Exemplo 1

  • Representar o nmero -0,75 10em ponto flutuante e preciso simples.
  • Representar o nmero -0,75 10em ponto flutuante e dupla preciso.

68. Resposta da 1

  • 1 afase: converter para binrio:
    • 0,75 x 2 = 1,51
    • 0,5 x 2= 1,01
    • -0,75 10= -0,11 2= -0,11 x 2 0= -1,1 x 2 -1
  • Em preciso simples:
  • Resultado:
  • Representao:

69. Exemplo

  • Converter a palavra abaixo em ponto flutuante para nmero

70. Resposta 71. Lendas e Falhas 8 72. Lendas e Falhas

  • Lenda: a adio em ponto flutuante associativa; ou seja,x+(y+z)=(x+y)+z .
  • Lenda: assim como uma instruo de deslocamento esquerda pode substituir uma multiplicao inteira por uma diviso inteira por uma potncia de 2.
  • Lenda: s os matemticos tericos se preocupam com a preciso das operaes em ponto flutuante.

73. Bibliografia

  • Patterson, David A. e Hennessy, John L.Organizao e Projeto de Computadores: A Interface Hardware/Software . Ed. LTC,2. Ed., 2000, Rio de Janeiro.

74.