SlideShare uma empresa Scribd logo
1 de 31
Baixar para ler offline
Ponto flutuante



LNCC                     UFRJ
Explicando o nome: “ponto flutuante”

1º
       Em línguas de origem anglo-saxônica
     o separador decimal é o ponto (e não a
       vírgula como nas de origem latina).


  2º

                                              ...
                                              0002374.0   x   10-2
                                              000237.40   x   10-1
                                              00023.740   x   10-0
                              23.74 =         0002.3740   x   10+1
                                              00.237400   x   10+2
                                              0.0237400   x   10+3
                                              ...
Representação de ponto flutuante
          normalizada

   Dada a representação decimal de um número real
           y = GyN yN-1 ... y2 y1 y0 . y-1 y-2 ... yk ...
    na qual o dígito mais significativo yN é não-nulo,
   existe um, e apenas um, expoente exp para o qual
                y =G yN . yN-1 ... yk ... x 10exp.
          Tal representação é dita normalizada.

                                              ...
                                              0002374.0     x   10-2
                                              000237.40     x   10-1
                                              00023.740     x   10-0
                            23.74 =           0002.3740     x   10+1
                                              00.237400     x   10+2
                                              0.0237400     x   10+3
                                              ...
Campos para a representação decimal
   de ponto flutuante normalizada

              Para estabelecer de forma única a
          representação decimal de ponto flutuante
                normalizada de um número real
                   y = Gy0 . y1 ... yk ... x 10exp
         basta definir:
                • o sinal (+ ou -) de y;
                • a fração (y0 . y1 ... yk ...) de y;
                • o expoente (exp) de y.
         Note bem que, na base 10, a normalização
         exige:
                           0 < y0 < 10.
Representação binária de
ponto flutuante normalizada
      A representação binária de ponto flutuante
     normalizada de um número real y é dada por
               y = Gy0 . y1 ... yk ... x 2exp,
             onde yk 2 {0,1} para k 2 ;
     Lembre-se: bit é abreviação para binary digit:
                         0 ou 1.
    Note bem que, na base 2, a normalização exige:
              0 < y0 < 2, isto é, y0 = 1.


                 Portanto, qualquer que seja y, y0 = 1.
O hiden bit    Assim, não há necessidade de representar
                 explicitamente o bit mais significativo.
               Então ele passa a ser um bit “escondido”.
Números reais

A distinção fundamental entre o conjunto dos
  números reais e o conjunto dos números
       racionais é o Axioma do supremo:
 “Todo conjunto limitado superiormente de
     números reais possui um supremo”.


          A partir desse axioma, constrói-se a
     representação decimal com infinitos dígitos de
        números irracionais, como e, π, d2, etc.
            Em última análise, dado o fator
     exponencial de ajuste, tais representações são
       séries convergentes de frações decimais.
A finitude do computador digital

        A finitude de memória do computador digital
        obriga, de fato, à utilização de representações
           finitas de cadeias de 0’s e 1’s – os bits.
             Tanto na fração como no expoente!



   Nos computadores digitais:

         Séries                           Somas
      convergentes                        finitas

         Expoentes restritos a uma faixa
O padrão IEEE 754/2008

É o padrão adotado atualmente para a
representação de ponto flutuante nas
  implementações tanto de software
         como de hardware.


                   •   Formatos aritméticos;
                   •   Formatos para intercâmbio
                   •   Algoritmos para arredondamento;
                   •   Operações algébricas
                   •   Manipulação de exceções
O IEEE 754 / 2008
 Os formatos binários adotados no padrão IEEE 754/2008
são definidos por uma terna ( s, e, f ) cujos valores definem
  a quantidade de bits para cada campo da representação
    binária de ponto flutuante normalizada do número:
       • s      campo do sinal;
       • e      campo do expoente;
       • f      campo da fração (ou mantissa).


                                              Single: (1,8,23)

                                          Double: (1,11,52)

              Acrescente o bit
                                        Quad: (1,15,112)
            escondido na fração!
Representação binária


  A representação binária de um número X é
         armazenada em três campos:




Sinal de                          Fração de
   X         Expoente de              X
                  X
Padrão IEEE 754/2008 - Single




                         4 bytes




1 bit para o 8 bits para o         23 bits para a
    sinal     expoente                fração
Padrão IEEE 754/2008 - Single



      s          e                 f


      (-1)s#2e-127#(1.f)   se   0<e<255
      (-1)s#2-126#(0.f)    se   e=0 e fs0
X=    (-1)s#0              se   e=0 e f=0
      (-1)s#Inf            se   e=255 e f=0
      NaN                  se   e=255 e fs0
Padrão IEEE 754/2008 - Single



     s                   e                             f

   O sinal s é 0 quando o número é positivo e 1 quando é negativo

O expoente e é uma sequência de 8 bits, armazenada em complemento
          a dois, com o desvio (bias) 011111112 = 12710

      A fração f é uma sequência de 23 bits, f = f1f2...f23,
     com fk 2 {0,1} para 1%k%23 e o seu valor é dado pela
         fração decimal f = f1#2-1+f2#2-2...f23#2-23
Padrão IEEE 754/2008 – Expoentes positivos
  Os hifens são
 facilitadores da
       leitura
                                         0000-0010     22
                                                                 2
          0000-0001    12               ---------
          ---------              1       0000-0010     2C2
          0000-0001    1C2              0111-1111     + bias
          0111-1111    + bias           ---------
          ---------                      1000-0001     memória
          1000-0000    memória

                        0111-1111     1272
                        ---------               127
                        0111-1111     127C2
                        0111-1111     + bias
                        ---------
                        1111-1110     memória
Padrão IEEE 754/2008 – Expoentes negativos

 0000-0001    1
 1111-1110    -1C1    -1          0000-0011    3
                                   1111-1100    -3C1    -3
 0000-0001    +1
 ---------                         0000-0001    +1
 1111-1111    -1C2                ---------
 0111-1111    +bias               1111-1101    -3C2
 ---------                         0111-1111    +bias
 0111-1110    memória             ---------
                                   0111-1100    memória

                0111-1110    126
                                        -126
                1000-0001    -126C1
                0000-0001    +1
                ---------
                1000-0010    -126C2
                0111-1111    +bias
                ---------
                0000-0001    memória
Padrão IEEE 754/2008 – Expoentes extremos

 1000-0000    1282            0000-0000    02
 ---------              128    ---------              0
 1000-0000    128C2           0000-0000    0C2
 0111-1111    +bias           0111-1111    +bias
 ---------                     ---------
 1111-1111    memória         0111-1111    memória


0000-0000    0               0111-1111    127
1111-1111    -0C1      -0    1000-0000    -127C1   -127
0000-0001    +1              0000-0001    +1
---------                     ---------
0000-0000    -0C2            1000-0001    -127C2
0111-1111    +bias           0111-1111    +bias
---------                     ---------
0111-1111    memória         0000-0000    memória
Padrão IEEE 754/2008 – a ordenação dos
              expoentes

            -127        0000-0000   Desnormalização
            -126        0000-0001
                   ...
  Base 10    -2         0111-1101
             -1         0111-1110
             -0         0111-1111
                                         Faixa normal
             +0         0111-1111
             +1         1000-0000
             +2         1000-0001
                   ...
            +127        1111-1110
            +128        1111-1111    Excessão
Python v2.7
          The Python Standard Library
Chap. 9 - Numeric and Mathematical Modules
A “reta real” no computador

                                   Faixas
                            positiva e negativa
                           dos desnormalizados
   −∞                                                            +∞
            Faixa normal                          Faixa normal
              negativa                              positiva



Faixa dos                                                        Faixa dos
  NaN                                                              NaN
 negat.                                                            posit.
Problemas na conversão
   base 10  base 2
Algoritmo de conversão




1. Faça k=0, defina x2k = 0. e x10k = x10;
2. Multiplique x10k por 2 gerando y10k;
3. Denote por v2k o “vai 0” ou “vai 1” do resultado y10k;
4. Substitua k por k+1;
5. Defina o novo x10k suprimindo v2k do y10k anterior (quando v2k=0 isto
   é desnecessário) ;
6. Defina o novo x2k acrescentando v2k à representação anterior x2k;
7. Se o novo x10k = 0 acabou; a representação na base dois foi obtida. Senão
   retorne ao passo 2.
Gerando “bí”zimas periódicas



                           Para números racionais
– que é o caso dos números passíveis de representação em ponto flutuante –
         o algoritmo de conversão descrito na transparência anterior
                  só termina em um número finito de passos
           quando a representação x10 de x(0<x<1) na base 10
                       é uma potência (negativa) de dois
                ou uma soma de potências (negativas) de dois.
Decimais com 1 dígito após a vírgula



0.0
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
0.9
      80%
Decimais com 2 dígitos após a vírgula

 0.00
 0.01
  ...
 0.24
 0.25
 0.26
  ...
 0.49
 0.50
 0.51
  ...
 0.74
 0.75
 0.76
  ...
         96%
 0.99
Repetir a idéia
A grande maioria é “bí”zima

          0.00       0.000        0.0000000
          0.01       0.001        0.0000001
0.0        ...        ...            ...
0.1       0.24       0.124        0.xxxxxxx
0.2       0.25       0.125        0.xxxxxxx
0.3       0.26       0.126        0.xxxxxxx
0.4        ...        ...            ...
0.5       0.49       0.499        0.4999999
0.6       0.50       0.500        0.5000000
0.7       0.51       0.501        0.5000001
0.8 80%    ... 96%    ... 99.2%      ...    99.9936%
0.9       0.74       0.874        0.xxxxxxx
          0.75       0.875        0.xxxxxxx
          0.76       0.876        0.xxxxxxx
           ...        ...            ...
          0.99       0.999        0.9999999
A avaliação de funções
O que é realmente calculado...



   x                  y


           f         y* = f(x*)
   x*
   x           f
                     Y = f(x)
Operações algébricas em ponto flutuante
A adição


+ : (x,y) / x+y

     1.   Possui elemento neutro : o zero;
     2.   Cada x possui seu inverso –x;
     3.   É comutativa;
     4.   Não é associativa.
A multiplicação



* : (x,y) / x*y

    1.   Possui elemento neutro : o um;
    2.   Cada xs0 possui seu inverso: 1/x - não!
    3.   É comutativa – sim!
    4.   É associativa – não!

Mais conteúdo relacionado

Mais procurados

Ordenação de Dados por Distribuição de Chaves
Ordenação de Dados por Distribuição de ChavesOrdenação de Dados por Distribuição de Chaves
Ordenação de Dados por Distribuição de ChavesMauricio Volkweis Astiazara
 
Eletronica digital lista i
Eletronica digital   lista iEletronica digital   lista i
Eletronica digital lista iCarlos Melo
 
www.AulasDeMatematicaApoio.com - Matemática - Frações Algébricas
 www.AulasDeMatematicaApoio.com  - Matemática -  Frações Algébricas www.AulasDeMatematicaApoio.com  - Matemática -  Frações Algébricas
www.AulasDeMatematicaApoio.com - Matemática - Frações AlgébricasAulas De Matemática Apoio
 
Sistemas digitais
Sistemas digitaisSistemas digitais
Sistemas digitaisVitor Faria
 
Dominio contradominio de uma função exponencial
Dominio contradominio de uma função exponencialDominio contradominio de uma função exponencial
Dominio contradominio de uma função exponencialPaulo Mutolo
 
Introdução aos kits Lego RCX
Introdução aos kits Lego RCXIntrodução aos kits Lego RCX
Introdução aos kits Lego RCXFernando Passold
 
Sistemas digitais - Sistemas de Numeração
Sistemas digitais - Sistemas de NumeraçãoSistemas digitais - Sistemas de Numeração
Sistemas digitais - Sistemas de NumeraçãoCarlos Pereira
 
Edo
EdoEdo
Edowvnf
 
Aula 05 - ma1 - ifes - 1 semestre 2011
Aula   05 - ma1 - ifes -  1 semestre 2011Aula   05 - ma1 - ifes -  1 semestre 2011
Aula 05 - ma1 - ifes - 1 semestre 2011Moises Omena
 
Atividade avaliativa extra unidade 2
Atividade avaliativa extra   unidade 2Atividade avaliativa extra   unidade 2
Atividade avaliativa extra unidade 2Judson Praxedes
 
Linguagem C (Parte 4)
Linguagem C (Parte 4)Linguagem C (Parte 4)
Linguagem C (Parte 4)Daniel Barão
 
Cálculo diferencial e integral de várias variáveis unid iii
Cálculo diferencial e integral de várias variáveis   unid iiiCálculo diferencial e integral de várias variáveis   unid iii
Cálculo diferencial e integral de várias variáveis unid iiiBruno Luz
 
Unid 2- sistemas lineares
Unid 2- sistemas linearesUnid 2- sistemas lineares
Unid 2- sistemas linearesBrenda Rayza
 

Mais procurados (20)

Sistema de numeração
Sistema de numeraçãoSistema de numeração
Sistema de numeração
 
Ordenação de Dados por Distribuição de Chaves
Ordenação de Dados por Distribuição de ChavesOrdenação de Dados por Distribuição de Chaves
Ordenação de Dados por Distribuição de Chaves
 
Eletronica digital lista i
Eletronica digital   lista iEletronica digital   lista i
Eletronica digital lista i
 
www.AulasDeMatematicaApoio.com - Matemática - Frações Algébricas
 www.AulasDeMatematicaApoio.com  - Matemática -  Frações Algébricas www.AulasDeMatematicaApoio.com  - Matemática -  Frações Algébricas
www.AulasDeMatematicaApoio.com - Matemática - Frações Algébricas
 
Sistemas digitais
Sistemas digitaisSistemas digitais
Sistemas digitais
 
Dig1
Dig1Dig1
Dig1
 
Cálculo numérico
Cálculo numéricoCálculo numérico
Cálculo numérico
 
Calculo numerico
Calculo numerico Calculo numerico
Calculo numerico
 
Dominio contradominio de uma função exponencial
Dominio contradominio de uma função exponencialDominio contradominio de uma função exponencial
Dominio contradominio de uma função exponencial
 
Introdução aos kits Lego RCX
Introdução aos kits Lego RCXIntrodução aos kits Lego RCX
Introdução aos kits Lego RCX
 
Sistemas digitais - Sistemas de Numeração
Sistemas digitais - Sistemas de NumeraçãoSistemas digitais - Sistemas de Numeração
Sistemas digitais - Sistemas de Numeração
 
Polinomios 17122016
Polinomios 17122016Polinomios 17122016
Polinomios 17122016
 
Rel lab 4
Rel lab 4Rel lab 4
Rel lab 4
 
Edo
EdoEdo
Edo
 
Aula 05 - ma1 - ifes - 1 semestre 2011
Aula   05 - ma1 - ifes -  1 semestre 2011Aula   05 - ma1 - ifes -  1 semestre 2011
Aula 05 - ma1 - ifes - 1 semestre 2011
 
Atividade avaliativa extra unidade 2
Atividade avaliativa extra   unidade 2Atividade avaliativa extra   unidade 2
Atividade avaliativa extra unidade 2
 
Cl interpolao
Cl interpolaoCl interpolao
Cl interpolao
 
Linguagem C (Parte 4)
Linguagem C (Parte 4)Linguagem C (Parte 4)
Linguagem C (Parte 4)
 
Cálculo diferencial e integral de várias variáveis unid iii
Cálculo diferencial e integral de várias variáveis   unid iiiCálculo diferencial e integral de várias variáveis   unid iii
Cálculo diferencial e integral de várias variáveis unid iii
 
Unid 2- sistemas lineares
Unid 2- sistemas linearesUnid 2- sistemas lineares
Unid 2- sistemas lineares
 

Destaque

Leitura complementar 05 - Homem computador e interfaces
Leitura complementar 05 - Homem computador e interfacesLeitura complementar 05 - Homem computador e interfaces
Leitura complementar 05 - Homem computador e interfacesPROF COMPUTAÇÃO Bordoni
 
Ferramentas de Programação Paralela para Arquiteturas Multicore
Ferramentas de Programação Paralela para Arquiteturas MulticoreFerramentas de Programação Paralela para Arquiteturas Multicore
Ferramentas de Programação Paralela para Arquiteturas MulticoreHelton Ritter
 
Curso python
Curso pythonCurso python
Curso pythonTiago
 
Ponto Flutuante em MIPS
Ponto Flutuante em MIPSPonto Flutuante em MIPS
Ponto Flutuante em MIPSMayara Mônica
 
Leitura complementar 03 - Computadores eletrônicos
Leitura complementar 03 - Computadores eletrônicosLeitura complementar 03 - Computadores eletrônicos
Leitura complementar 03 - Computadores eletrônicosPROF COMPUTAÇÃO Bordoni
 
Leitura complementar 07 - Linha do tempo, ling.progr
Leitura complementar 07 - Linha do tempo, ling.progrLeitura complementar 07 - Linha do tempo, ling.progr
Leitura complementar 07 - Linha do tempo, ling.progrPROF COMPUTAÇÃO Bordoni
 
ACII - SL02 - Representação computacional
ACII - SL02 - Representação computacionalACII - SL02 - Representação computacional
ACII - SL02 - Representação computacionalUFPB
 
Leitura complementar 01 - Computadores mecânicos
Leitura complementar 01 - Computadores mecânicosLeitura complementar 01 - Computadores mecânicos
Leitura complementar 01 - Computadores mecânicosPROF COMPUTAÇÃO Bordoni
 
Leitura complementar 02 - Computadores eletromecânicos
Leitura complementar 02 - Computadores eletromecânicosLeitura complementar 02 - Computadores eletromecânicos
Leitura complementar 02 - Computadores eletromecânicosPROF COMPUTAÇÃO Bordoni
 
Transformar número decimal em fração decimal
Transformar número decimal em fração decimalTransformar número decimal em fração decimal
Transformar número decimal em fração decimalMarcia Roberto
 

Destaque (16)

Leitura complementar 05 - Homem computador e interfaces
Leitura complementar 05 - Homem computador e interfacesLeitura complementar 05 - Homem computador e interfaces
Leitura complementar 05 - Homem computador e interfaces
 
Ferramentas de Programação Paralela para Arquiteturas Multicore
Ferramentas de Programação Paralela para Arquiteturas MulticoreFerramentas de Programação Paralela para Arquiteturas Multicore
Ferramentas de Programação Paralela para Arquiteturas Multicore
 
Curso python
Curso pythonCurso python
Curso python
 
Ponto Flutuante em MIPS
Ponto Flutuante em MIPSPonto Flutuante em MIPS
Ponto Flutuante em MIPS
 
Leitura complementar 04 - Microrocessadores
Leitura complementar 04 - MicrorocessadoresLeitura complementar 04 - Microrocessadores
Leitura complementar 04 - Microrocessadores
 
Python 02 - Interatividade
Python 02 - InteratividadePython 02 - Interatividade
Python 02 - Interatividade
 
Python 01 apresentando
Python 01 apresentandoPython 01 apresentando
Python 01 apresentando
 
Leitura complementar 03 - Computadores eletrônicos
Leitura complementar 03 - Computadores eletrônicosLeitura complementar 03 - Computadores eletrônicos
Leitura complementar 03 - Computadores eletrônicos
 
Leitura complementar 07 - Linha do tempo, ling.progr
Leitura complementar 07 - Linha do tempo, ling.progrLeitura complementar 07 - Linha do tempo, ling.progr
Leitura complementar 07 - Linha do tempo, ling.progr
 
Python 04 - Programação Estruturada
Python 04 - Programação EstruturadaPython 04 - Programação Estruturada
Python 04 - Programação Estruturada
 
Tabela de conversao
Tabela de conversaoTabela de conversao
Tabela de conversao
 
ACII - SL02 - Representação computacional
ACII - SL02 - Representação computacionalACII - SL02 - Representação computacional
ACII - SL02 - Representação computacional
 
Python 03 - Sintaxe
Python 03 - SintaxePython 03 - Sintaxe
Python 03 - Sintaxe
 
Leitura complementar 01 - Computadores mecânicos
Leitura complementar 01 - Computadores mecânicosLeitura complementar 01 - Computadores mecânicos
Leitura complementar 01 - Computadores mecânicos
 
Leitura complementar 02 - Computadores eletromecânicos
Leitura complementar 02 - Computadores eletromecânicosLeitura complementar 02 - Computadores eletromecânicos
Leitura complementar 02 - Computadores eletromecânicos
 
Transformar número decimal em fração decimal
Transformar número decimal em fração decimalTransformar número decimal em fração decimal
Transformar número decimal em fração decimal
 

Semelhante a Python 05 - Ponto flutuante

Semelhante a Python 05 - Ponto flutuante (20)

CUSC.pptx
CUSC.pptxCUSC.pptx
CUSC.pptx
 
aula6ads.pdf
aula6ads.pdfaula6ads.pdf
aula6ads.pdf
 
ANÁLISE COMPLETA DE UMA FUNÇÃO
ANÁLISE COMPLETA DE UMA FUNÇÃOANÁLISE COMPLETA DE UMA FUNÇÃO
ANÁLISE COMPLETA DE UMA FUNÇÃO
 
Calculo Numérico -Conceitos_Basicos (2).ppt
Calculo Numérico -Conceitos_Basicos (2).pptCalculo Numérico -Conceitos_Basicos (2).ppt
Calculo Numérico -Conceitos_Basicos (2).ppt
 
Programação para Atari 2600
Programação para Atari 2600Programação para Atari 2600
Programação para Atari 2600
 
3-BasesNumericas.ppt
3-BasesNumericas.ppt3-BasesNumericas.ppt
3-BasesNumericas.ppt
 
Representação de dados
Representação de dadosRepresentação de dados
Representação de dados
 
binario conversao hexadecimal octal decimal
binario conversao hexadecimal octal decimalbinario conversao hexadecimal octal decimal
binario conversao hexadecimal octal decimal
 
Programação para Atari 2600
Programação para Atari 2600Programação para Atari 2600
Programação para Atari 2600
 
Programando em python codificacao de dados
Programando em python   codificacao de dadosProgramando em python   codificacao de dados
Programando em python codificacao de dados
 
Função do 1º Grau 27-04-2023.pdf
Função do 1º Grau 27-04-2023.pdfFunção do 1º Grau 27-04-2023.pdf
Função do 1º Grau 27-04-2023.pdf
 
Apostila digital cefetes
Apostila digital cefetesApostila digital cefetes
Apostila digital cefetes
 
Função do 2º Grau
Função do 2º GrauFunção do 2º Grau
Função do 2º Grau
 
Sistemas numericos
Sistemas numericosSistemas numericos
Sistemas numericos
 
Matematica grafico da funcao quadratica
Matematica grafico da funcao quadraticaMatematica grafico da funcao quadratica
Matematica grafico da funcao quadratica
 
Função do 2 grau.ppt
Função do 2 grau.pptFunção do 2 grau.ppt
Função do 2 grau.ppt
 
Apostila digital cefetes
Apostila digital cefetesApostila digital cefetes
Apostila digital cefetes
 
Noções
 Noções Noções
Noções
 
Contadorgray
ContadorgrayContadorgray
Contadorgray
 
Tp representação de informação
Tp   representação de informaçãoTp   representação de informação
Tp representação de informação
 

Python 05 - Ponto flutuante

  • 2. Explicando o nome: “ponto flutuante” 1º Em línguas de origem anglo-saxônica o separador decimal é o ponto (e não a vírgula como nas de origem latina). 2º ... 0002374.0 x 10-2 000237.40 x 10-1 00023.740 x 10-0 23.74 = 0002.3740 x 10+1 00.237400 x 10+2 0.0237400 x 10+3 ...
  • 3. Representação de ponto flutuante normalizada Dada a representação decimal de um número real y = GyN yN-1 ... y2 y1 y0 . y-1 y-2 ... yk ... na qual o dígito mais significativo yN é não-nulo, existe um, e apenas um, expoente exp para o qual y =G yN . yN-1 ... yk ... x 10exp. Tal representação é dita normalizada. ... 0002374.0 x 10-2 000237.40 x 10-1 00023.740 x 10-0 23.74 = 0002.3740 x 10+1 00.237400 x 10+2 0.0237400 x 10+3 ...
  • 4. Campos para a representação decimal de ponto flutuante normalizada Para estabelecer de forma única a representação decimal de ponto flutuante normalizada de um número real y = Gy0 . y1 ... yk ... x 10exp basta definir: • o sinal (+ ou -) de y; • a fração (y0 . y1 ... yk ...) de y; • o expoente (exp) de y. Note bem que, na base 10, a normalização exige: 0 < y0 < 10.
  • 5. Representação binária de ponto flutuante normalizada A representação binária de ponto flutuante normalizada de um número real y é dada por y = Gy0 . y1 ... yk ... x 2exp, onde yk 2 {0,1} para k 2 ; Lembre-se: bit é abreviação para binary digit: 0 ou 1. Note bem que, na base 2, a normalização exige: 0 < y0 < 2, isto é, y0 = 1. Portanto, qualquer que seja y, y0 = 1. O hiden bit Assim, não há necessidade de representar explicitamente o bit mais significativo. Então ele passa a ser um bit “escondido”.
  • 6. Números reais A distinção fundamental entre o conjunto dos números reais e o conjunto dos números racionais é o Axioma do supremo: “Todo conjunto limitado superiormente de números reais possui um supremo”. A partir desse axioma, constrói-se a representação decimal com infinitos dígitos de números irracionais, como e, π, d2, etc. Em última análise, dado o fator exponencial de ajuste, tais representações são séries convergentes de frações decimais.
  • 7. A finitude do computador digital A finitude de memória do computador digital obriga, de fato, à utilização de representações finitas de cadeias de 0’s e 1’s – os bits. Tanto na fração como no expoente! Nos computadores digitais: Séries Somas convergentes finitas Expoentes restritos a uma faixa
  • 8. O padrão IEEE 754/2008 É o padrão adotado atualmente para a representação de ponto flutuante nas implementações tanto de software como de hardware. • Formatos aritméticos; • Formatos para intercâmbio • Algoritmos para arredondamento; • Operações algébricas • Manipulação de exceções
  • 9. O IEEE 754 / 2008 Os formatos binários adotados no padrão IEEE 754/2008 são definidos por uma terna ( s, e, f ) cujos valores definem a quantidade de bits para cada campo da representação binária de ponto flutuante normalizada do número: • s  campo do sinal; • e  campo do expoente; • f  campo da fração (ou mantissa). Single: (1,8,23) Double: (1,11,52) Acrescente o bit Quad: (1,15,112) escondido na fração!
  • 10. Representação binária A representação binária de um número X é armazenada em três campos: Sinal de Fração de X Expoente de X X
  • 11. Padrão IEEE 754/2008 - Single 4 bytes 1 bit para o 8 bits para o 23 bits para a sinal expoente fração
  • 12. Padrão IEEE 754/2008 - Single s e f (-1)s#2e-127#(1.f) se 0<e<255 (-1)s#2-126#(0.f) se e=0 e fs0 X= (-1)s#0 se e=0 e f=0 (-1)s#Inf se e=255 e f=0 NaN se e=255 e fs0
  • 13. Padrão IEEE 754/2008 - Single s e f O sinal s é 0 quando o número é positivo e 1 quando é negativo O expoente e é uma sequência de 8 bits, armazenada em complemento a dois, com o desvio (bias) 011111112 = 12710 A fração f é uma sequência de 23 bits, f = f1f2...f23, com fk 2 {0,1} para 1%k%23 e o seu valor é dado pela fração decimal f = f1#2-1+f2#2-2...f23#2-23
  • 14. Padrão IEEE 754/2008 – Expoentes positivos Os hifens são facilitadores da leitura 0000-0010  22 2 0000-0001  12 --------- --------- 1 0000-0010  2C2 0000-0001  1C2 0111-1111  + bias 0111-1111  + bias --------- --------- 1000-0001  memória 1000-0000  memória 0111-1111  1272 --------- 127 0111-1111  127C2 0111-1111  + bias --------- 1111-1110  memória
  • 15. Padrão IEEE 754/2008 – Expoentes negativos 0000-0001  1 1111-1110  -1C1 -1 0000-0011  3 1111-1100  -3C1 -3 0000-0001  +1 --------- 0000-0001  +1 1111-1111  -1C2 --------- 0111-1111  +bias 1111-1101  -3C2 --------- 0111-1111  +bias 0111-1110  memória --------- 0111-1100  memória 0111-1110  126 -126 1000-0001  -126C1 0000-0001  +1 --------- 1000-0010  -126C2 0111-1111  +bias --------- 0000-0001  memória
  • 16. Padrão IEEE 754/2008 – Expoentes extremos 1000-0000  1282 0000-0000  02 --------- 128 --------- 0 1000-0000  128C2 0000-0000  0C2 0111-1111  +bias 0111-1111  +bias --------- --------- 1111-1111  memória 0111-1111  memória 0000-0000  0 0111-1111  127 1111-1111  -0C1 -0 1000-0000  -127C1 -127 0000-0001  +1 0000-0001  +1 --------- --------- 0000-0000  -0C2 1000-0001  -127C2 0111-1111  +bias 0111-1111  +bias --------- --------- 0111-1111  memória 0000-0000  memória
  • 17. Padrão IEEE 754/2008 – a ordenação dos expoentes -127  0000-0000 Desnormalização -126  0000-0001 ... Base 10 -2  0111-1101 -1  0111-1110 -0  0111-1111 Faixa normal +0  0111-1111 +1  1000-0000 +2  1000-0001 ... +127  1111-1110 +128  1111-1111 Excessão
  • 18. Python v2.7 The Python Standard Library Chap. 9 - Numeric and Mathematical Modules
  • 19. A “reta real” no computador Faixas positiva e negativa dos desnormalizados −∞ +∞ Faixa normal Faixa normal negativa positiva Faixa dos Faixa dos NaN NaN negat. posit.
  • 20. Problemas na conversão base 10  base 2
  • 21. Algoritmo de conversão 1. Faça k=0, defina x2k = 0. e x10k = x10; 2. Multiplique x10k por 2 gerando y10k; 3. Denote por v2k o “vai 0” ou “vai 1” do resultado y10k; 4. Substitua k por k+1; 5. Defina o novo x10k suprimindo v2k do y10k anterior (quando v2k=0 isto é desnecessário) ; 6. Defina o novo x2k acrescentando v2k à representação anterior x2k; 7. Se o novo x10k = 0 acabou; a representação na base dois foi obtida. Senão retorne ao passo 2.
  • 22. Gerando “bí”zimas periódicas Para números racionais – que é o caso dos números passíveis de representação em ponto flutuante – o algoritmo de conversão descrito na transparência anterior só termina em um número finito de passos quando a representação x10 de x(0<x<1) na base 10 é uma potência (negativa) de dois ou uma soma de potências (negativas) de dois.
  • 23. Decimais com 1 dígito após a vírgula 0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 80%
  • 24. Decimais com 2 dígitos após a vírgula 0.00 0.01 ... 0.24 0.25 0.26 ... 0.49 0.50 0.51 ... 0.74 0.75 0.76 ... 96% 0.99
  • 26. A grande maioria é “bí”zima 0.00 0.000 0.0000000 0.01 0.001 0.0000001 0.0 ... ... ... 0.1 0.24 0.124 0.xxxxxxx 0.2 0.25 0.125 0.xxxxxxx 0.3 0.26 0.126 0.xxxxxxx 0.4 ... ... ... 0.5 0.49 0.499 0.4999999 0.6 0.50 0.500 0.5000000 0.7 0.51 0.501 0.5000001 0.8 80% ... 96% ... 99.2% ... 99.9936% 0.9 0.74 0.874 0.xxxxxxx 0.75 0.875 0.xxxxxxx 0.76 0.876 0.xxxxxxx ... ... ... 0.99 0.999 0.9999999
  • 27. A avaliação de funções
  • 28. O que é realmente calculado... x y f y* = f(x*) x* x f Y = f(x)
  • 29. Operações algébricas em ponto flutuante
  • 30. A adição + : (x,y) / x+y 1. Possui elemento neutro : o zero; 2. Cada x possui seu inverso –x; 3. É comutativa; 4. Não é associativa.
  • 31. A multiplicação * : (x,y) / x*y 1. Possui elemento neutro : o um; 2. Cada xs0 possui seu inverso: 1/x - não! 3. É comutativa – sim! 4. É associativa – não!