Você está na página 1de 25

Ponto

 Flutuante  e  Aritmé0ca  de  Ponto  Flutuante  

Daniel  Ludovico  Guidoni  


danielguidoni@gmail.com  

AOC  I   1  
Revisão  

• Conversão  binário  para  decimal  


• Converter  101,101  para  decimal  
• 101,101  =  1x22  +  0x21  +  1x20  +  1x2-­‐1  +  0x2-­‐2  +  1x2-­‐3  
                                           =  4  +  0  +  1  +  0,5  +  0  +  0,125  
               =  5,625  

ISL  I  
AOC   2  
Revisão  

• Conversão  de  decimal  para  binário  


• A  parte  inteira  converte  da  maneira  conhecida  (divisões  sucessivas  por  2)  
• Parte  Fracionária  
– Mul0plica  o  número  por  2  
– Se  o  resultado  for  maior  do  que  1,  coloque  1  ao  número  binário.  
– Se  o  resultado  for  menor  do  que  1,  coloque  0  ao  número  binário  
– Mul0plique  apenas  a  parte  fracionaria  por  2  novamente  e  comece  o  processo  
– O  algoritmo  para  quando  a  mul0plicação  por  2  for  1  

ISL  I  
AOC   3  
Revisão  

• Converta  5,625  para  binário  


• Parte  inteira  
– 5  =  101  

• Parte  fracionária  
– 0,625  *  2  =  1,25    -­‐>  binário  =  1  
– 0,25  *  2  =  0,5    -­‐>  binário  =  10  
– 0,5  *2  =  1      -­‐>  binário  =  101  
– Fim  

• 5,625  =  101,101  

• Converta  o  número  11,6  para  binário  

ISL  I  
AOC   4  
Ponto  Flutuante  

• Precisamos  de  uma  maneira  para  representar  números  reais  


– 3,14159265....  
– 0,0000000000000000001  
– 3.155.760.000  
– 3.123.456.789.123,123456789  

• Notação  cien_fica:  
– 3,15576  x  109  
– Possui  um  único  dígito  a  esquerda  do  ponto  decimal  
– Notação  cien_fica  normalizada:  o  dígito  a  esquerda  do  ponto  decimal  é  
diferente  de  zero  

• Número  binário  na  notação  cien_fica  


– 1,02  x  2-­‐1  

ISL  I  
AOC   5  
Ponto  Flutuante  

• Notação  cien_fica  para  binário  

     1,aaaaaaaa  x  2bbbb  
 

• Ponto  decimal  -­‐>  ponto  binário  

• 5,625  =  101,101  
             =  1,01101  x  22  

ISL  I  
AOC   6  
Ponto  Flutuante  

• Representação  de  ponto  flutuante  


– Fração  (significado)  e  expoente  

• Um  bit  para  o  sinal  


• Expoente  de  8  bits  
• Fração  de  23  bits  
• Formato:  (-­‐1)s  x  Fração  X  2expoente  

ISL  I  
AOC   7  
Ponto  Flutuante  

• Expoente  de  8  bits  


– Números  entre  10-­‐38  a  1038  
– Overflow:  o  número  é  muito  grande  
– Underflow:  o  número  é  muito  pequeno  

• Ponto  flutuante  de  precisão  dupla  

• Expoente  de  11  bits:  


– Números  entre  10308  a  10308  

ISL  I  
AOC   8  
Ponto  Flutuante  

• Números  em  binário  na  notação  cien_fica  sempre  possuem  o  dígito  1  a  


esquerda  da  virgula  
– Se  é  sempre,  então  é  desnecessário  

• Precisão  simples:  de  23  para  24  bits  no  significado  

• Precisão  dupla:  de  53  para  54  bits  no  significado  

• Expoente  e  significado  com  zeros  representa  o  número  zero.  


• Representação:  (-­‐1)s  x  (1  +  Fração)  x  2expoente  

• Cálculo  do  número  

ISL  I  
AOC   9  
Ponto  Flutuante  

• Representando  o  expoente  
– Expoente  nega0vo  -­‐>  complemento  de  2  
– Em  complemento  de  2,  o  bit  mais  a  esquerda  é  o  bit  de  sinal  
– Problema:  o  número  nega0vo  em  complemento  de  2  sempre  possui  o  dígito  1  
no  bit  mais  a  esquerda  

• Representação  de  1,0  x  2-­‐1  

• Representação  de  1,0  x  21  

• Como  saber  quando  um  expoente  é  maior  do  que  o  outro?  

ISL  I  
AOC   10  
Ponto  Flutuante  

• Notação  desejável  
– Expoente  mais  nega0vo  como  00000000  
– Expoente  mais  posi0vo  como  11111111  

• O  expoente  é  desviado  para  facilitar  a  classificação  

• O  IEEE  754  u0liza  um  deslocamento  de  127  (1023  para  precisão  dupla)  
– O  desvio  do  expoente  -­‐1  é  -­‐1  +  127  =  126  
– O  desvio  o  expoente  1  é  1  +  127  =  128  

• Novo  padrão  de  representação  


       (-­‐1)s  x  (1  +  Fração)  x  2(desvio  -­‐  deslocamento)  
 

• Desvio  é  o  expoente  deslocado  

ISL  I  
AOC   11  
Representação  de  ponto  flutuante  

• Mostre  a  representação  binária  IEEE  754  para  o  número  -­‐0,75  


• -­‐0,7510  =  -­‐0,112  
• Em  notação  cien_fica  temos:  -­‐1,1  x  2-­‐1  
• A  representação  é:  
       (-­‐1)s  x  (1  +  Fração)  x  2(desvio  -­‐  deslocamento)  
• Precisão  simples:  deslocamento  de  127  
• Desvio:  -­‐1  +  127  =  126  
• Representação  na  precisão  simples:  

(-­‐1)1  x  (1  +  ,10000  0000  0000  0000  0000  000)  x  2(126  -­‐  127)  

ISL  I  
AOC   12  
Representação  de  ponto  flutuante  

• Na  precisão  dupla:  
– Desvio  =  -­‐1  +  1023  =  1022  

• Representação  na  precisão  dupla:  

(-­‐1)1  x  (1  +  ,10000  0000  0000  0000  0000  0000  0000  0000  0000  0000  0000  0000  0000)  x  2(1022  -­‐  1023)  
 
 

ISL  I  
AOC   13  
Representação  de  ponto  flutuante  

• Convertendo  ponto  flutuante  binário  para  decimal  

• Bit  de  sinal  =  1  


• Expoente  =  129  
• Fração  =  1  x  2-­‐2  =  0,25  

• (-­‐1)s  x  (1  +  Fração)  x  2(desvio  –  deslocamento)  


• (-­‐1)1  x  (1  +  0,25)  x  2(129  -­‐  127)  
• =  -­‐1  x  1,25  x  22  
• =  -­‐1,25  x  4  
• =  -­‐5,0  

ISL  I  
AOC   14  
Adição  decimal  em  ponto  flutuante  

• 9,999  x  101  +  1,610  x  10-­‐1      


• 4  bits  para  significado  e  2  bits  para  expoente  

• Passo  1:  alinhar  corretamente  o  expoente  do  menor  número  com  o  do  
maior  
       1,610  x  10-­‐1  =  0,1610  x  100  =  0,01610  x  101  
 
 

• Como  só  podemos  representar  4  bits  de  significado,  na  realidade  temos:  

             0,016  x  101  

ISL  I  
AOC   15  
Adição  decimal  em  ponto  flutuante  

• Passo  2:  adição  dos  significados  

             9,999  
                   +    0,016  
                       10,015  
 
• O  resultado  é  10,015  x  101  

ISL  I  
AOC   16  
Adição  decimal  em  ponto  flutuante  

• Passo  3:  colocar  o  resultado  na  notação  cien_fica  

     10,015  x  101  =  1,0015  x  102  


 
 
• Como  o  expoente  pode  ser  aumentado  ou  diminuído,  temos  que  verificar  
se  aconteceu  um  overflow  (número  muito  grande)  ou  underflow  (número  
muito  pequeno)  no  expoente  

• Como  temos  2  bits  para  expoente,  não  aconteceu  overflow  

ISL  I  
AOC   17  
Adição  decimal  em  ponto  flutuante  

• Passo  4:  arredondar  o  significado.  Temos  apenas  4  bits  para  o  significado  


– Trucar  o  número  se  o  dígito  à  direita  es0ver  entre  0  e  4  
– Somar  1  se  o  dígito  à  direita  es0ver  entre  5  e  9  

         1,0015  x  102  
 
 
           1,002  x  102  
 

 
• Problema:  ao  somar  1,  o  número  pode  ficar  desnormalizado.  Nesse  caso,  
deve  realizar  a  etapa  3  novamente  

ISL  I  
AOC   18  
Adição  em  ponto  flutuante  

ISL  I  
AOC   19  
Adição  binário  em  ponto  flutuante  

• Somar  os  números  0,5    e  -­‐0,4375    


– 4  bits  de  significado  
– 4  bits  de  expoente  

• Passo  0:  converter  os  números  para  binário  na  forma  normalizada  

• 0,5  =  1,000  x  2-­‐1  

• -­‐0,4375  =  -­‐1,110  x  2-­‐2  

ISL  I  
AOC   20  
Adição  binário  em  ponto  flutuante  

• Passo  1:  Equiparar  o  menor  expoente  com  o  maior  

• Número  com  o  menor  expoente:  -­‐1,110  x  2-­‐2  =  -­‐0,111  x  2-­‐1  

• Passo  2:  Somar  os  significados  

     1,000  x  2-­‐1    +  (-­‐0,111  x  2-­‐1)  =  0,001  x  2-­‐1  


 
• Passo  3:  Normalizar  a  soma  

         0,001  x  2-­‐1  =  1,000  x  2-­‐4  


 

• Não  aconteceu  overflow  nem  underflow  

ISL  I  
AOC   21  
Adição  binário  em  ponto  flutuante  

• Passo  4:  arredondamento  da  soma  

• Soma:  1,000  x  2-­‐4  


• Como  a  soma  cabe  em  4  bits,  não  é  necessário  arredondamento  

• Resultado:  
– 0,5  –  0,4375  =  0,0626  

– 1,000  x  2-­‐4  =  0,0001000  =  0,0001  =  1  x  2-­‐4  =  1/16  =  0,0625  

ISL  I  
AOC   22  
Adição  binário  em  ponto  flutuante  

Compara  
expoentes  

Desloca  à  
direita  

Soma  

Normaliza  

Arredonda  

ISL  I  
AOC   23  
Instruções  para  ponto  flutuante  

ISL  I  
AOC   24  
Instruções  para  ponto  flutuante  

ISL  I  
AOC   25  

Você também pode gostar