Fundamentos de Arquiteturas de Computadores
Representação em Ponto Flutuante
Profa. Débora Christina Muchaluat Saade
debora@midiacom.uff.br
Departamento de Ciência da Computação - UFF
http://www.midiacom.uff.br/debora/
Fundamentos de Arquiteturas de Computadores
Roteiro
ü
Notação Científica Normalizada
ü
Expoente e mantissa
ü
Padrão IEEE 754 Precisão Simples
ü
Padrão IEEE 754 Precisão Dupla
Fundamentos de Arquiteturas de Computadores
Números Fracionários
ü
Na representação em ponto fixo, a vírgula não é representada mas assumida em uma posição fixa.
• Utiliza-se a vírgula na posição mais a direita para representar números inteiros.
ü
Números fracionários utilizam a representação em ponto flutuante:
• Exemplos:
–
3,141592565
–
2,71828
–
1,0 x 10
-9–
3.155.760.000 = 3,15576 x 10
9Fundamentos de Arquiteturas de Computadores
Notação Científica
ü
Utiliza-se a notação científica:
• 1,0 x 10
-9• 3,15576 x 10
9ü
Notação científica normalizada: somente um dígito diferente de zero antes da vírgula
• 0,1 x 10
-8e 10,0 x 10
-11=> não normalizadas
• 1,0 x 10
-9e 1,0 x 10
-10=> normalizadas
Fundamentos de Arquiteturas de Computadores
Números Fracionários
ü
Utiliza-se a notação científica:
• 1,0 x 10
-9• 3,15576 x 10
9ü
Notação científica normalizada: somente um dígito diferente de zero antes da vírgula
• 0,1 x 10
-8e 10,0 x 10
-11=> não normalizadas
• 1,0 x 10
-9e 1,0 x 10
-10=> normalizadas
ü
Vantagens de se usar esta notação:
• Padrão para trocar dados
• Simplifica aritmética, pois números ficam padronizados
• Aumenta precisão dos números que podem ser representados porque não desperdiça dígitos.
–
Exemplo: 0,000012 x 10
-2= 1,2 x 10
-7Fundamentos de Arquiteturas de Computadores
Representação em Ponto Flutuante
ü
Números binários em notação científica normalizada
• (1,0)
2x 2
-1ü
Representação de um número na base 2 em ponto flutuante
• +/- (1,M)
2x 2
E– +/- => sinal
– M => mantissa
– E => expoente
Fundamentos de Arquiteturas de Computadores
Representação em Ponto Flutuante
ü
O que tem que ser representado ?
• N = (+/-) 1,M x 2
Eü
(+/-) Sinal (M) Mantissa (E) Expoente
ü
(S) Sinal => 1 bit
• 0 => positivo (+)
• 1 => negativo (-)
S expoente mantissa
Fundamentos de Arquiteturas de Computadores
Representação em Ponto Flutuante
ü
O que tem que ser representado ?
• N = (+/-) 1,M x 2
Eü
(+/-) Sinal (M) Mantissa (E) Expoente
ü
Questões:
• Quantos bits utilizar para mantissa e expoente?
• Qual a representação utilizada para mantissa e expoente?
–
sinal e magnitude, complemento a 2, excesso?
S expoente mantissa
9
Fundamentos de Arquiteturas de Computadores
Exemplo de Ponto Flutuante
ü N = (+/-)1,M x 2E
ü +407,37510 = ( )2 = (110010111,011)2=1,M x 2E= 1,10010111011 x 2+8
ü Parte inteira:
• 407/2=203, sobra 1, logo d0=1
• 203/2=101, sobra 1, logo d1=1
• 101/2=50, sobra 1, logo d2=1
• 50/2=25, sobra 0, logo d3=0
• 25/2=12, sobra 1, logo d4=1
• 12/2=6, sobra 0, logo d5=0
• 6/2=3, sobra 0, logo d6=0
• 3/2=1, sobra 1, logo d7=1
• 1/2=0, sobra 1, logo d8=1
ü Parte fracionária:
• 0,375x2 = 0,750 => d-1=0
• 0,75x2 = 1,5 => d-2=1
• 0,5x2 = 1,0 => d-3=1
Fundamentos de Arquiteturas de Computadores
Exemplo de Ponto Flutuante
ü N = (+/-)1,M x 2E
ü +407,37510 = ( )2 = (110010111,011)2=1,M x 2E= 1,10010111011 x 2+8
ü Sinal (positivo) = 0 (1bit)
ü E = +8, utilizando-se SM com 7 bits:
• 0001000
ü M=10010111011 (11 bits) completa com bits 0 até 24 bits
Sinal Expoente Mantissa
|---|
| 0 | 0001000 |100101110110000000000000|
|---|
1 bit 7 bits 24 bits
Fundamentos de Arquiteturas de Computadores
Exemplo de Ponto Flutuante
ü Dado o número em ponto flutuante, qual o decimal a ele associado ?
• Exemplo: 04D00000 (expoente em SM)
ü N = 1,M x 2E
ü 0000 0100 1101 0000 0000 0000 0000 0000
ü S=0, E=+4, M=1101
ü N = +1,1101 x 24 = 11101 = +29,0
S expoente mantissa
Fundamentos de Arquiteturas de Computadores
Padrão IEEE 754 – Precisão Simples
ü Formato IEEE 754 para ponto flutuante
ü |31|30|29|28|27|26|25|24|23|22|21|...|0|
ü |---|
ü |S |Expoente | Mantissa |
ü |---|
ü 1 8 bits 23 bits
ü N=(+/-) 1,M x 2E
ü Precisão simples – 32 bits no total:
• 8 bits para expoente e 23 para mantissa
ü Expoente com representação em excesso de 127 (27 -1)
S expoente mantissa
Fundamentos de Arquiteturas de Computadores
Padrão IEEE 754 – Precisão Dupla
ü Formato IEEE 754 para ponto flutuante
ü |63|62|61|60|59|58|57|56|55|54|53|...|0|
ü |---|
ü |S |Expoente | Mantissa |
ü |---|
ü 1 11 bits 52 bits
ü N=(+/-) 1,M x 2E
ü Precisão dupla – 64 bits no total:
• 11 bits para expoente e 52 para mantissa
ü Expoente com representação em excesso de 1023 (210 -1)
S expoente mantissa
1 11 bits 52 bits
Fundamentos de Arquiteturas de Computadores
Decisões do IEEE 754
ü
Sinal mais à esquerda para facilitar a comparação com zero:
• em C2, bit mais significativo é zero para números positivos e 1 para números negativos, então pode-se utilizar
instruções que comparem inteiros
ü
Expoente antes da mantissa porque números com maior expoente são maiores e a representação do inteiro é maior
• Utiliza-se a notação excesso de N para o expoente para permitir comparação bit a bit.
–
O expoente mais negativo tem a representação 0000...000, e o
mais positivo tem a representação 1111...111
Fundamentos de Arquiteturas de Computadores
Exemplo de IEEE 754 Precisão Simples
ü N = (+/-)1,M x 2E
ü +407,37510 = ( )2 = (110010111,011)2=1,M x 2E= 1,10010111011 x 2+8
ü Sinal (positivo) = 0 (1bit)
ü E = +8, utilizando-se expoente com excesso de 127 com 8 bits, E=135:
• 10000111
ü M=10010111011 (11 bits) completa com bits 0 até 23 bits
Sinal Expoente Mantissa
|---|
| 0 | 10000111 |10010111011000000000000|
|---|
1 bit 8 bits 23 bits
ü 32 bits no total
S expoente mantissa
1 8 bits 23 bits
Fundamentos de Arquiteturas de Computadores
Exemplo de IEEE 754 Precisão Dupla
ü N = (+/-)1,M x 2E
ü +407,37510 = ( )2 = (110010111,011)2=1,M x 2E= 1,10010111011 x 2+8
ü Sinal (positivo) = 0 (1bit)
ü E = +8, utilizando-se expoente com excesso de 1023 com 11 bits, E=1031:
• 10000000111
ü M=10010111011 (11 bits) completa com bits 0 até 52 bits
Sinal Expoente Mantissa
|---|
| 0 | 10000000111 |1001011101100000000000000000000000000000000000000000|
|---|
1 bit 11 bits 52 bits
S expoente mantissa
Fundamentos de Arquiteturas de Computadores
Exemplo de IEEE 754 Precisão Dupla
ü N = (+/-)1,M x 2E
ü -0,7510 = - 0,112 = - 1,12x 2-1
ü Sinal (negativo) = 1 (1bit)
ü E = -1, utilizando-se excesso de 1023 com 11 bits, E=1022:
• 01111111110
ü M=1 (1 bit) completa com bits 0 até 52 bits
Sinal Expoente Mantissa
|---|
| 1 | 01111111110 |1000000000000000000000000000000000000000000000000000|
|---|
1 bit 11 bits 52 bits
ü 64 bits no total
S expoente mantissa
1 11 bits 52 bits
Fundamentos de Arquiteturas de Computadores
Exemplo de IEEE 754 Precisão Dupla
ü C0A00000C0A00000 representa que número em ponto flutuante?
ü 1100 0000 1010 0000 0000 0000 0000 0000 1100 0000 1010 0000 0000 0000 0000 0000
ü 64 bits
• 1 bit sinal
• 11 bits expoente
• 52 bits mantissa
ü Sinal (1 - negativo) = -1
ü Expoente (1000001010) = 1034 => 1034 – 1023 = +11
ü Mantisssa = 0000000000000000000011000000101000000000000000000000
ü N = -1,00000000000000000000110000001012 x 2+11
S expoente mantissa
1 11 bits 52 bits
19
Fundamentos de Arquiteturas de Computadores
Padrão IEEE 754 Casos Especiais
Sinal Expoente Mantissa Valor do número
0 0000....0000 0000....0000 +0
0 0000....0000 0000....0001
1111....1111 0,M x 2-126 0 0000....0001
1111....1110 XXXX....XXXX 1,XXXX....XXXX x 2(e-b) 0 1111....1111 0000....0000 + infinito
0 1111....1111 0000....0001
1111....1111 NaN
1 0000....0000 0000....0000 -0
1 0000....0000 0000....0001
1111....1111 -0,M x 2-126 1 0000....0001
1111....1110 XXXX....XXXX -1,XXXX....XXXX x 2(e-b) 1 1111....1111 0000....0000 - infinito
1 1111....1111 0000....0001
1111....1111 NaN
Soma em ponto flutuante
Somar 9,999x101 com 1,610x10-1.
Suponha que pode-se utilizar 4 dígitos para o número e 2 dígitos para expoente.
1. Alinha o ponto decimal do número que tem o menor expoente para igualar ao expoente do número que tem maior expoente.
1,610x10-1=0,1610x100=0,016x101(só pode usar 4 dígitos)
Porque alinha menor com maior ? Pode perder digitos, então melhor perder dígitos menos significativos. Maior chance de resultado ser normalizado.
2.
3. 1.101 x 2-6,
4. 1.001001 x 26
5. .000000000001101 x 26
6. 1.001001 x 26
7. ---
8. 1.001001000001101 x 26
9. Soma as mantissas
10.
11. 9,999
12. 0,016
Fundamentos de Arquiteturas de Computadores
Padrão IEEE 754 Casos Especiais
ü Casos especiais para IEEE 754 precisão simples:
• E=0(e=-127) e M=0, S=0 ou 1, representa zero
• E=0(e=-127) e M<>0, S=0 ou 1, Não normalizado, e=-126, complicado de usar
• E=255(e=+128) e M=0, S=0 ou 1, (+/-)infinito, divisão por zero
• E=255 (e=+128), M<>0, S=0 ou 1, NaN (Not a Number), 0/0, infinito - infinito
• -126 =< expoente <=+127, número normalizado
ü Menor não-normalizado
• 0,000000000000000000000012x2-126=1,02x2-149
ü Maior não-normalizado
• 0,111111111111111111111112x2-126
ü Menor número normalizado:
• 1 para expoente e 0 para mantissa, 1,02x2-126 = 10-38
ü Maior número normalizado:
S expoente mantissa
1 8 bits 23 bits
Fundamentos de Arquiteturas de Computadores
Padrão IEEE 754 Casos Especiais
ü Casos especiais para IEEE 754 precisão dupla:
• E=0(e=-1023) e M=0, S=0 ou 1, representa zero
• E=0(e=-1023) e M<>0, S=0 ou 1, Não normalizado, e=-1022, complicado de usar
• E=2047(e=+1024) e M=0, S=0 ou 1, (+/-)infinito, divisão por zero
• E=2047 (e=+1024), M<>0, S=0 ou 1, NaN (Not a Number), 0/0, infinito - infinito
• -1022 =< expoente <=+1023, número normalizado
ü Menor não-normalizado
• 0,0000000000000000…00000012x2-1022=1,02x2-1074
ü Maior não-normalizado
• 0,1111111111111111111…11112x2-1022
ü Menor número normalizado:
• 1 para expoente e 0 para mantissa, 1,02x2-1022
ü Maior número normalizado:
• bits do expoente todos em 1, com exceção do bit menos significativo
• logo e= 2046-1023=+1023, e mantissa toda com 1s, 1,1111..12x21023
S expoente mantissa
1 11 bits 52 bits
Fundamentos de Arquiteturas de Computadores
Soma em Ponto Flutuante em Decimal
ü
Soma em ponto flutuante
ü
Somar 9,999x10
1com 1,610x10
-1.
ü
Suponha que pode-se utilizar 4 dígitos para o número e 2 dígitos para expoente.
1.
Alinha o ponto decimal do número que tem o menor
expoente para igualar ao expoente do número que tem maior expoente.
1,610x10
-1=0,1610x10
0=0,016x10
1(só pode usar 4 dígitos) Por que alinha menor com maior?
•
Pode perder dígitos, então melhor perder dígitos menos
Fundamentos de Arquiteturas de Computadores
Soma em Ponto Flutuante em Decimal
2.
Soma as mantissas 9,999
0,016 ---
10,015 x 10
13.
Coloca em notação científica normalizada
•
10,015x10
1=1,0015x10
24.
Ajusta para número de dígitos possível com arredondamento
•
1,0015x10
2=1,002x10
25.
Verifica se houve overflow ou underflow
•
Se o expoente maior ou menor do que é possível ser representado
Fundamentos de Arquiteturas de Computadores
Soma em Ponto Flutuante em Binário
ü
Assumir 4 dígitos para número e 2 dígitos para expoente
ü
Somar 0,510 com -0,437510
ü
Converte para a base 2.
•
0,5 = 0,1x2
0= 1,000x2
-1•
-0,4375 = -0,01110x2
0= -1,110x2
-2ü
Desloca a vírgula do número com menor expoente. O número de deslocamentos é igual a diferença entre os expoentes. Se os expoentes são iguais, não há deslocamento.
•
-1,110x2
-2= -0,1110x2
-1= -0,111x2
-1ü
Soma os números
•
1,000x2
-1+ (-0,111x2
-1) = 0,001x2
-1Fundamentos de Arquiteturas de Computadores
Soma em Ponto Flutuante em Binário
ü
Soma os números
•
1,000x2
-1+(-0,111x2
-1) = 0,001x2
-1ü
Normaliza a soma se necessário
•
0,001x2
-1= 0,010x2
-2= 0,100x2
-3= 1,000x2
-4ü
Trunca resultado para número de bits que pode ser utilizado.
•
Formato de 4 dígitos para número e 2 dígitos para expoente
– 1,000x2-4
Fundamentos de Arquiteturas de Computadores
Resultado em IEEE 754 Precisão Simples
ü Para padrão IEEE 754 precisão simples (dupla), ocorre overflow se
expoente maior que 127 (1023) ou underflow se expoente menor que -126 (-1022) então será gerada uma exceção
ü IEEE 754 Precisão simples:
• +1,000x2-4
• Expoente => -4 + 127 = +123
• 00111101100000000000000000000000
• 3D800000
ü IEEE 754 Precisão dupla:
• +1,000x2-4
• Expoente => -4 + 1023 = +1019
• 00111111101100000000000000000000000000000000000000…0
• 3FB0000000000000