Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Aritmetica Computacional

11,237 views

Published on

  • DOWNLOAD THIS BOOKS INTO AVAILABLE FORMAT (Unlimited) ......................................................................................................................... ......................................................................................................................... Download Full PDF EBOOK here { http://bit.ly/2m77EgH } ......................................................................................................................... Download Full EPUB Ebook here { http://bit.ly/2m77EgH } ......................................................................................................................... ACCESS WEBSITE for All Ebooks ......................................................................................................................... Download Full PDF EBOOK here { http://bit.ly/2m77EgH } ......................................................................................................................... Download EPUB Ebook here { http://bit.ly/2m77EgH } ......................................................................................................................... Download doc Ebook here { http://bit.ly/2m77EgH } ......................................................................................................................... ......................................................................................................................... ......................................................................................................................... .............. Browse by Genre Available eBooks ......................................................................................................................... Art, Biography, Business, Chick Lit, Children's, Christian, Classics, Comics, Contemporary, Cookbooks, Crime, Ebooks, Fantasy, Fiction, Graphic Novels, Historical Fiction, History, Horror, Humor And Comedy, Manga, Memoir, Music, Mystery, Non Fiction, Paranormal, Philosophy, Poetry, Psychology, Religion, Romance, Science, Science Fiction, Self Help, Suspense, Spirituality, Sports, Thriller, Travel, Young Adult,
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • DOWNLOAD THIS BOOKS INTO AVAILABLE FORMAT (Unlimited) ......................................................................................................................... ......................................................................................................................... Download Full PDF EBOOK here { https://tinyurl.com/y6a5rkg5 } ......................................................................................................................... Download Full EPUB Ebook here { https://tinyurl.com/y6a5rkg5 } ......................................................................................................................... ACCESS WEBSITE for All Ebooks ......................................................................................................................... Download Full PDF EBOOK here { https://tinyurl.com/y6a5rkg5 } ......................................................................................................................... Download EPUB Ebook here { https://tinyurl.com/y6a5rkg5 } ......................................................................................................................... Download doc Ebook here { https://tinyurl.com/y6a5rkg5 } ......................................................................................................................... ......................................................................................................................... ......................................................................................................................... .............. Browse by Genre Available eBooks ......................................................................................................................... Art, Biography, Business, Chick Lit, Children's, Christian, Classics, Comics, Contemporary, Cookbooks, Crime, Ebooks, Fantasy, Fiction, Graphic Novels, Historical Fiction, History, Horror, Humor And Comedy, Manga, Memoir, Music, Mystery, Non Fiction, Paranormal, Philosophy, Poetry, Psychology, Religion, Romance, Science, Science Fiction, Self Help, Suspense, Spirituality, Sports, Thriller, Travel, Young Adult,
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here

Aritmetica Computacional

  1. 1. Aritmética Computacional The complexity is in eye of the observer... As much as the object allows.
  2. 2. Introdução <ul><li>Humanos: sistema decimal. </li></ul><ul><li>Computadores: sistema binário. </li></ul><ul><li>Como representar números negativos e números reais? </li></ul><ul><li>Qual é o maior número representável numa palavra de computador? </li></ul><ul><li>O que acontece quando o resultado é maior do que a capacidade do computador? </li></ul>
  3. 3. Conteúdo <ul><li>Números com sinal e números sem sinal </li></ul><ul><li>Adição e subtração </li></ul><ul><li>Operações lógicas </li></ul><ul><li>Construção de uma unidade aritmética lógica </li></ul><ul><li>Multiplicação </li></ul><ul><li>Divisão </li></ul><ul><li>Operações em ponto flutuante </li></ul><ul><li>Lendas e falhas </li></ul><ul><li>Considerações Finais </li></ul>
  4. 4. Números com sinal e números sem sinal 1
  5. 5. Números com Sinal e Números sem Sinal <ul><li>Base 10: </li></ul><ul><ul><li>2543 (10) =2  10 3 +5  10 2 +4  10 1 +3  10 0 (10) </li></ul></ul><ul><li>Base 2: </li></ul><ul><ul><li>1011 (2) =1  2 3 +0  2 2 +1  2 1 +1  2 0 =11 (10) </li></ul></ul><ul><li>Representação no Z80 (8 bits) </li></ul>0 0 0 0 1 0 1 1 Bit Menos Significativo (LSB) Bit Mais Significativo (MSB)
  6. 6. Faixa de números sem sinal para 8 bits: 0 a 256-1 <ul><li>0000 0000 (2) = 0 (10) </li></ul><ul><li>0000 0001 (2) = 1 (10) </li></ul><ul><li>0000 0010 (2) = 2 (10) </li></ul><ul><li>... </li></ul><ul><li>1111 1100 (2) = 252 (10) </li></ul><ul><li>1111 1101 (2) = 253 (10) </li></ul><ul><li>1111 1110 (2) = 254 (10) </li></ul><ul><li>1111 1111 (2) = 255 (10) </li></ul>
  7. 7. Representação de números <ul><li>Números reais: infinitos. </li></ul><ul><li>No computador: finitos. </li></ul><ul><li>Maioria: grande quantidade de zeros à esquerda. </li></ul><ul><li>Computador: pode lidar com números até um certo tamanho. </li></ul><ul><li>Overflow : tratado pelo sistema operacional. </li></ul><ul><li>No computador: é preciso representar números com sinal. </li></ul><ul><ul><li>Solução: usar 1 bit (sinal magnitude). </li></ul></ul><ul><li>Primeira tentativa: o bit mais significativos (MSB) é usado para sinal. </li></ul><ul><ul><li>Problema: duas representações para o zero </li></ul></ul><ul><ul><li>Solução mais usada: complemento a 2 </li></ul></ul>
  8. 8. Complemento a 2 <ul><li>A regra baseia-se no fato de que a soma de um número com sua representação invertida deve ser -1: </li></ul>
  9. 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. 10. Complemento a 2: regra prática <ul><li>Considere X = 0000 1000, o complemento a 2 de X será: </li></ul>-X = 1111 1000 X = 1111 0111 1 +
  11. 11. Interface Hardware/Software <ul><li>Endereços: sempre positivos </li></ul><ul><li>Os números vão de 0 a 27FF (Z80), e não são nunca negativos. </li></ul><ul><li>Em C: “int” e “unsigned int”. </li></ul>
  12. 12. Exercícios <ul><li>Converta -15 (10) para binário com representação em sinal/magnitude (16 bits). </li></ul><ul><li>Converta -15 (10) para binário com representação em complemento a 2 (16 bits). </li></ul><ul><li>Qual é o número, em decimal, representado em complemento a 2 por 1010 0011 (2) ? </li></ul><ul><li>Usando complemento a 2 qual é a faixa de números que podem ser representados com 8 bits? </li></ul>
  13. 13. Adição e Subtração 2
  14. 14. Adição e Subtração <ul><li>No computador: soma semelhante à soma no sistema decimal. </li></ul><ul><li>Soma: soma cada bit, mais o vai-um. </li></ul>
  15. 15. Adição e Subtração (8 bits) <ul><li>6 (10) = 0000 0110 (2) </li></ul><ul><li>7 (10) = 0000 0111 (2) </li></ul>0000 0111 0000 0110 + 0000 1101 adição 0000 0111 0000 0110 - 0000 0001 subtração 0000 0111 1111 1010 + 0000 0001 Subtração com complemento a 2
  16. 16. Overflow <ul><li>Ocorre sempre que o resultado de uma operação não pode ser representado no hardware disponível. </li></ul><ul><li>Se um número for negativo, e o outro positivo, não ocorrerá overflow. </li></ul><0 <0 >=0 A-B >=0 >=0 <0 A-B >=0 <0 <0 A+B <0 >=0 >= 0 A+B Resultado Operando B Operando A Operação
  17. 17. Exemplo de overflow Adição de 2 operandos positivos (8 bits) <ul><li>Isto significa que o resultado está correto se o bit de sinal for ignorado </li></ul>0100 0110 0110 0000 + 1010 0110 overflow positivo positivo negativo
  18. 18. Exemplo de overflow Adição de 2 operandos negativos (8 bits) <ul><li>Isto significa que o resultado é negativo e está em complemento a 2 </li></ul>1000 0000 1010 0000 + 1 0010 0000 overflow negativo negativo positivo carry
  19. 19. Exemplo de overflow Adição de operandos com sinais opostos (8 bits) <ul><li>Não ocorre overflow, o resultado é negativo e está em complemento a 2 </li></ul>0100 0000 1010 0000 + 1110 0000 positivo negativo negativo
  20. 20. Exemplo de overflow Adição de operandos com sinais opostos (8 bits) <ul><li>Não ocorre overflow, o carry é ignorado e o resultado é positivo </li></ul>0110 0000 1100 0000 + 1 0010 0000 positivo negativo positivo carry
  21. 21. Interface Hardware/Software <ul><li>Na ocorrência de overflow: a máquina precisa decidir como tratá-lo. </li></ul><ul><ul><li>Linguagem C: não toma conhecimento do overflows. A tarefa é do programador. </li></ul></ul><ul><ul><li>FORTRAN: trata o overflow </li></ul></ul>
  22. 22. Exercícios <ul><li>Faça as operações aritméticas abaixo utilizando números binários de 8 bits e complemento a 2: </li></ul><ul><ul><li>+9 + 4 </li></ul></ul><ul><ul><li>+9 - 4 </li></ul></ul><ul><ul><li>-9 + 4 </li></ul></ul><ul><ul><li>-9 - 4 </li></ul></ul>
  23. 23. Operações Lógicas 3
  24. 24. Operações Lógicas <ul><li>Em muitas aplicações é necessário processar bits isolados dentro de uma palavra  operações lógicas </li></ul><ul><li>Shifts: deslocamento à esquerda ou à direita  instruções rlc, rrc, rl, rr </li></ul><ul><ul><li>Ver apostila de laboratório: Aula 06 – Instruções de Rotação e Funções </li></ul></ul>
  25. 25. Operações AND e OR <ul><li>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) </li></ul><ul><li>Operação OR: também atua bit a bit colocando 1 no resultado se qualquer um dos bits correspondentes do operando for 1. </li></ul>
  26. 26. Construção de uma Unidade Aritmética Lógica 4
  27. 27. Introdução <ul><li>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 </li></ul><ul><li>A partir de agora mostrar-se-á como construir uma UAL para realizar as quatro operações acima </li></ul>
  28. 28. Blocos Construtivos Básicos NOT (Inversora) AND OR Multiplexador Se d==0, c=a senão c=b a c a c b a c b a b 0 1 d c
  29. 29. Uma UAL de 1 Bit <ul><li>Unidade lógica de 1 bit: </li></ul><ul><li>Operação = 0 ou 1  AND ou OR. </li></ul>
  30. 30. Somador de 1 bit <ul><li>Soma A + B + “vem 1” </li></ul><ul><li>Gera Resultado e “vai um” </li></ul><ul><li>Tabela Verdade: </li></ul>1+1+1 = 11 1+1+0 = 10 1+0+1 = 10 1+0+0 = 01 0+1+1 = 10 0+1+0 = 01 0+0+1 = 01 0+0+0 = 00 Comentários 1 0 1 1 0 0 1 0 0 1 1 0 1 0 1 1 0 0 1 1 1 0 1 0 Vem 1 1 1 1 1 0 1 1 0 0 1 0 0 0 0 0 0 Vai 1 Soma B A Saídas Entradas
  31. 31. Exercício <ul><li>Gerar a unidade lógica a seguir: </li></ul>Soma CarryOut CarryIn a b +
  32. 32. UAL Simples de 1 bit
  33. 33. Exercícios <ul><li>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. </li></ul><ul><li>Como projetar uma UAL de 32 bits utilizando uma UAL de 1 bit? </li></ul>
  34. 34. UAL de 32 bits
  35. 35. Subtração <ul><li>A subtração é obtida somando-se o minuendo ao complemento a 2 do subtraendo, ou seja, </li></ul><ul><li>O circuito ao lado inverte o valor de b. Falta ainda somar 1 ao valor de b invertido. </li></ul><ul><li>Como fazê-lo? </li></ul>
  36. 36. Subtração <ul><li>Na soma o primeiro CarryIn (vem 1) é 0. </li></ul><ul><li>O que acontece de fizermos o primeiro CarryIn = 1? </li></ul>
  37. 37. Overflow <ul><li>Como fazer a detecção de overflow? </li></ul><ul><ul><li>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. </li></ul></ul>
  38. 38. Símbolo Geral da UAL
  39. 39. Problema <ul><li>Qual é o problema de uma UAL projetada como a anterior? </li></ul>
  40. 40. Carry Lookahead <ul><li>Com que velocidade podemos somar dois operandos de 32 bits? </li></ul><ul><ul><li>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. </li></ul></ul><ul><ul><li>Solução: </li></ul></ul><ul><ul><ul><li>CarryIn1=B0  CarryIn0+a0  CarryIn0+a0  b0 ou </li></ul></ul></ul><ul><ul><ul><li>C1=b0  c0+a0.c0+a0  b0 </li></ul></ul></ul><ul><ul><ul><li>C2=b1  c1+a1  c1+a0  b0 </li></ul></ul></ul>
  41. 41. Carry Lookahead <ul><li>Problema deste método: circuito ainda complexo para cálculos de muitos bits e portanto caro. </li></ul><ul><li>Qual a solução? </li></ul><ul><ul><li>Método de propagador e gerador. Veja livro texto. </li></ul></ul>
  42. 42. Multiplicação 5
  43. 43. Exemplo: como na prática <ul><li>1000 </li></ul><ul><li>x 1001 </li></ul><ul><li>1000 </li></ul><ul><li>0000 </li></ul><ul><li>0000 </li></ul><ul><li>1000____ </li></ul><ul><li>1001000 </li></ul>multiplicando multiplicador produto <ul><li>Número de dígitos: multiplicando + multiplicador. </li></ul><ul><li>32 bits x 32 bits = 64 bits. </li></ul>
  44. 44. Algoritmo <ul><li>Como na prática </li></ul><ul><li>Simplesmente coloque um cópia do multiplicando (1 x multiplicando) no lugar apropriado, se o digito do multiplicando for igual a 1, ou </li></ul><ul><li>Coloque 0 (0 x multiplicando) no lugar apropriado, se o digito do multiplicando for igual a 0; </li></ul><ul><li>Veremos a seguir 3 versões do algoritmo de multiplicação para 32 bits (32 x 32 bits) </li></ul>
  45. 45. Algoritmo: 1 ª Versão início 1. teste do Multiplicador0 1a. Produto = Produto + Multiplicando 2. desloque Multiplicando 1 bit à esquerda 3. desloque Multiplicador 1 bit à direita 32 repetições? Fim Multiplicador0=0 Multiplicador0=1 não sim
  46. 46. Hardware: 1 ª Versão
  47. 47. Exercício <ul><li>Usando números de 4 bits, com o intuito de economizar espaço, multiplique 2 10 por 3 10 ou 0010 2 por 0011 2 . </li></ul><ul><li>Valores iniciais: </li></ul><ul><ul><li>Multiplicando = 0000 0010 </li></ul></ul><ul><ul><li>Multiplicador = 0011 </li></ul></ul><ul><ul><li>Produto = 0000 0000 </li></ul></ul>
  48. 48. Desvantagens <ul><li>UAL de 64 bits. </li></ul><ul><li>2 registradores de 64 bits </li></ul><ul><li>Próxima versão: </li></ul><ul><ul><li>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. </li></ul></ul>
  49. 49. Algoritmo: 2 ª Versão início 1. teste do Multiplicador0 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 32 repetições? Fim Multiplicador0=0 Multiplicador0=1 não sim
  50. 50. Hardware: 2 ª Versão
  51. 51. Exercício <ul><li>Multiplique 0010 2 por 0011 2 usando a segunda versão do algoritmo de multiplicação. </li></ul><ul><li>Valores iniciais: </li></ul><ul><ul><li>Multiplicando = 0010 </li></ul></ul><ul><ul><li>Multiplicador = 0011 </li></ul></ul><ul><ul><li>Produto = 0000 0000 </li></ul></ul>
  52. 52. Versão Final do Algoritmo de Multiplicação <ul><li>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. </li></ul>
  53. 53. Algoritmo: 3 ª Versão início 1. teste do Produto0 1a. Some o multiplicando à metade esquerda do produto 2. desloque o registrador de Produto 1 bit à direita 32 repetições? Fim Produto0=0 Produto0=1 não sim
  54. 54. Hardware: 3 ª Versão Vantagens : ULA de 32 bits. Apenas 1 registrador de 64 bits.
  55. 55. Exercício <ul><li>Multiplique 0010 2 por 0011 2 usando a terceira versão do algoritmo de multiplicação. </li></ul><ul><li>Valores iniciais: </li></ul><ul><ul><li>Multiplicando = 0010 </li></ul></ul><ul><ul><li>Produto = 0000 0011 </li></ul></ul>
  56. 56. Divisão Divide et impera. Versão latina da velha máxima política “Divida e governe”, citada por Maquiavel em 1532 6
  57. 57. Divisão <ul><li>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. </li></ul><ul><li>dividendo = quociente x divisor + resto </li></ul>
  58. 58. Divisão início Teste do Resto 2a. Desloque o Quociente 1 bit à esquerda Q0 = 1 3. Desloque o Divisor 1 bit à direita 33 repetições? Fim Resto < 0 Resto>=0 não sim 1. Resto = Resto - Divisor 2b. Resto = Resto + Divisor Desloque o Quociente um 1 bit à esquerda Q0 = 0
  59. 59. Hardware da Divisão Divisor Deslocamento à direita (64 bits) UAL de 64 bits Quociente Deslocamento À esquerda (32 bits) Teste de controle 64 bits Resto Escrita
  60. 60. Exercício <ul><li>Dividir 0000 0111 2 por 0010 2 . </li></ul><ul><li>Valores iniciais: </li></ul><ul><ul><li>Quociente = 0000 </li></ul></ul><ul><ul><li>Divisor = 0010 0000 </li></ul></ul><ul><ul><li>Resto = 0000 0111 </li></ul></ul>
  61. 61. Operações em Ponto Flutuante 7
  62. 62. Operações em Ponto Flutuante <ul><li>Suporte a números inteiros com e sem sinal. </li></ul><ul><li>Suporte a números fracionários: 3,1414, 0,00001 etc. </li></ul><ul><li>Notação científica: 1,34 x 10 3 . </li></ul><ul><li>Números normalizados: 1 dígito antes do ponto decimal. </li></ul><ul><li>Números binários também podem ser normalizados. </li></ul><ul><li>Ponto decimal / ponto binário. </li></ul><ul><li>Aritmética com números normalizados: aritmética de ponto flutuante. </li></ul><ul><li>Em C: “float”. </li></ul><ul><li>Formato: 1,xxxxxxxx 2  2 yyyy . </li></ul>
  63. 63. Representação em Ponto Flutuante <ul><li>S – sinal do número </li></ul><ul><li>F – mantissa, normalizada </li></ul><ul><li>E – expoente </li></ul><ul><li>Tamanho: -2,0  10 38 a 2,0  10 38 . </li></ul>s expoente mantissa 32 bits 1 8 23
  64. 64. Overflow em Ponto Flutuante <ul><li>Ocorre quando o expoente é muito grande pra ser representado pelos 8 bits. </li></ul><ul><li>Underflow : O módulo do expoente negativo é muito grande. </li></ul><ul><li>Necessário números maiores: precisão dupla. Na linguagem C: double. </li></ul><ul><li>Representa números entre -2,0  10 -308 a 2,0  10 308 . </li></ul>s expoente mantissa 64 bits 1 11 52
  65. 65. Padrão IEEE 754 <ul><li>Torna implícito o “1” à esquerda do ponto binário. </li></ul><ul><li>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. </li></ul>
  66. 66. Padrão IEEE 754 <ul><li>Deve permitir comparações rápidas. </li></ul><ul><li>Seria melhor: o menor coeficiente possível valer 00000000, e o maior 11111111. </li></ul><ul><li>Modificação: </li></ul><ul><ul><li>Subtrair 127 (peso) do exponente. </li></ul></ul><ul><ul><li>Representação de –1: -1+127=-1+01111111=01111110. </li></ul></ul><ul><ul><li>+1=+1+127=10000000 2 . </li></ul></ul><ul><li>Formato: </li></ul><ul><li>Peso para precisão dupla: 1.023. </li></ul>
  67. 67. Exemplo 1 <ul><li>Representar o número -0,75 10 em ponto flutuante e precisão simples. </li></ul><ul><li>Representar o número -0,75 10 em ponto flutuante e dupla precisão. </li></ul>
  68. 68. Resposta da 1 <ul><li>1 a fase: converter para binário: </li></ul><ul><ul><li>0,75 x 2 = 1,5  1 </li></ul></ul><ul><ul><li>0,5 x 2 = 1,0  1 </li></ul></ul><ul><ul><li>-0,75 10 = -0,11 2 = -0,11 x 2 0 = -1,1 x 2 -1 </li></ul></ul><ul><li>Em precisão simples: </li></ul><ul><li>Resultado: </li></ul><ul><li>Representação: </li></ul>
  69. 69. Exemplo <ul><li>Converter a palavra abaixo em ponto flutuante para número </li></ul>
  70. 70. Resposta
  71. 71. Lendas e Falhas 8
  72. 72. Lendas e Falhas <ul><li>Lenda: a adição em ponto flutuante é associativa; ou seja, x+(y+z)=(x+y)+z . </li></ul><ul><li>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. </li></ul><ul><li>Lenda: só os matemáticos teóricos se preocupam com a precisão das operações em ponto flutuante. </li></ul>
  73. 73. Bibliografia <ul><li>Patterson, David A. e Hennessy, John L. Organização e Projeto de Computadores: A Interface Hardware/Software . Ed. LTC, 2. Ed., 2000, Rio de Janeiro. </li></ul>

×