FAC - ic.uff.brboeres/slides_FAC/parte6eparte7.pdf · • característica ou como IEEE754 define,...
Transcript of FAC - ic.uff.brboeres/slides_FAC/parte6eparte7.pdf · • característica ou como IEEE754 define,...
2
Na representação em ponto fixo, a vírgula não é representada, mas assumida em uma posição
Números fracionários utilizam a representação em ponto flutuante.
Exemplo: 3,141592565 2,71828 1,0 x 10-9 3.155.160.000 = 3,15576 x 109
3
Um formato especial é necessário para representar números muito grandes e frações muito pequenas
ficaria difícil representar através de ponto fixo um valor como
0,00000000000000000000000000073 2537000000000000000000000000000
e mais ainda a soma deles Para tal
• Notação científica – em computação: ponto flutuante
4
Notação científica Um dígito à esquerda do ponto decimal
1,0 x 10-9
3,15576 x 109
Notação científica normalizada • não possui zero antes da vírgula
0,1 x 10-8, 10 e 0 x 10-10: não normalizadas 1,0 x 10-9 e 1,0 x 10-9: normalizadas
5
Notação científica – em duas partes 1ª parte:
• o sinal do número • sua parte significativa • sua precisão
2ª parte: • grandeza do número (potência) ou valor do expoente
6
Notação científica N = +/- F × B +/-E
N número sendo representado +/- sinal
F dígitos significativos do número – parte fracionária ou mantissa
B base do expoente E valor do expoente
7
Números binários em notação científica normalizada
(1,0)2 x 2-1
Representação de um número na base 2 em ponto flutuante
(1,mmmmm)2 x 2 yyy • m = mantissa ou significando • y = expoente
8
Vantagens desta notação
Padrão para trocar dados Simplifica aritmética devido a padronização de números Pode representar grandes valores
• Mas pode perder precisão
9
Representação do expoente
sinal magnitude • mais simples
complemento a 2 • maior eficácia para as operações • muito utilizado
excesso em N
10
Excesso em N calcula-se a seguinte expressão
(2n /2 -1)+ E = C
n: quantidade de dígitos do expoente E: valor real do expoente C:
• característica ou como IEEE754 define, bias • valor armazenado no campo expoente
11
Excesso de N exemplo
• excesso de 127 • n = 8 • E = +37
– então C = (28/2 – 1) + 37 = 128-1+37 = 164
– (164)10 = (10100100)2
12
podemos representar um número através de diferentes produtos
• + 25 = + 25 X 1010
• + 25 = 0,25 X 10+2
• + 25 = 0,0025 X 10+4
• etc
Solução: normalização • mantissa: fracionário (menor que 1) • 1º algarismo após a vírgula ≠ zero
13
vantagem: maior precisão • + 25 = + 25 X 1010
• + 25 = 0,25 X 10+2
• + 25 = 0,0025 X 10+4
• etc
Solução: normalização • mantissa: fracionário (menor que 1) • 1º algarismo após a vírgula ≠ zero
14
Formato
7 bits e 24 para expoente e mantissa é um exemplo
S expoente mantissa 1 bit 7 bits 24 bits
N = (+/-) 1,mmmmm × 2yyy campos Sinal mantissa
ou significando
expoente
15
Algoritmo: conversão para base b
i = -1 N* = N x b
di = parte inteira de N* enquanto (parte fracionária de N´ ≠ 0 ) E
(número de bits ≤ m )
N* = parte fracionária de N* x b i = i-1
di = (nova) parte inteira de N*
17
Ex.: 0,7265625 na base 10 para base 2?
0,7265625 × 2 = 1,453125 → d-1=1 0,453125 × 2 = 0,90625 → d-2=0 0,90625 × 2 = 1,8125 → d-3=1 0,8125 × 2 = 1,625 → d-4=1 0,625 × 2 = 1,25 → d-5=1 0,25 × 2 = 0,5 → d-6=0 0,5 x × = 1,0 → d-7=1
(0,7265625)10 = (0,1011101)2
18
Ex.: 0,46 na base 10 para base 2?
0,46 × 2 = 0,92 → d-1=0 0,92 × 2 = 1,84 → d-2=1 0,84 × 2 = 1,68 → d-3=1 0,68 × 2 = 1,36 → d-4=1 0,36 × 2 = 0,72 → d-5=0 0,72 v2 = 1,44 → d-6=1 0,44 × 2 = 0,88 → d-7=0
(0,46) 10 = (0,0111010) 2
19
Conversão de +407,375 para ponto flutuante identificar os campos S, expoente e mantissa N = +/- M × B+/-E N = 407,375
S +407,375 convertendo para base 2: 110010111,011
20
110010111,011
normalizando:
0,1110010111011 × 29
0 , 1 1 1 0 0 1 0 1 1 1 0 1 1 anda para a esquerda 9 posições
1 1 0 0 1 0 1 1 1 , 0 1 1 anda para a esquerda 9 posições
21
então: 0,1110010111011 × 29
S 0
E 0001001 +9 Fração ou mantissa
1110010111011
No formato: S expoente mantissa 1 bit 7 bits 24 bits 0 0001001 111001011101100000000000
22
conversão de - 0,078125 (0,078125)10 (0,000101)2
para notação científica S 1 negativo
mantissa já é fracionária normalizando
0,000101 0,101 X 2-3
No formato: S expoente mantissa 1 bit 7 bits 24 bits 1 1000011 101000000000000000000000
23
Soma e Subtração se expoentes iguais:
• soma ou subtração das mantissas • neste caso, como visto em ponto fixo
se expoentes diferentes: • igualar expoentes
– expoente resultante é o de maior valor
24
n1= +37, n2 = -9, somar utilizando formato ponto flutuante (+37)10 (100101)2
(100101)2 +(0,100101 X 26)2
(-9)10 - (1001)2 -(0,1001 X 24)2
S expoente mantissa 1 bit 7 bits 24 bits 0 0000110 100101000000000000000000
S expoente mantissa 1 bit 7 bits 24 bits 1 0000100 100100000000000000000000
25
(+37)10 (0,100101 X 26)2
(-9)10 - (0,1001 X 24)2 - (0,001001 X 26)2
soma-se as mantissas
S expoente mantissa 1 bit 7 bits 24 bits 0 0000110 100101000000000000000000
S expoente mantissa 1 bit 7 bits 24 bits 1 0000110 001001000000000000000000
26
soma-se as mantissas (0,100101)2 - (0,001001)2 = (0,011100)2
normaliza (0,011100)2 = (0,111000 X 2 -1)2
S expoente mantissa 1 bit 7 bits 24 bits 0 0000101 111000000000000000000000
27
Trata-se de uma convenção para representação de números fracionários
facilita a portabilidade de programas
altamente utilizado em processadores modernos
28
formatos: • simples de 32 bits
– Expoentes de 8 bits
• duplo de 64 bits – Expoentes 11 bits
Precisão dupla aumenta a precisão das operações
Ainda: precisão estendida • para diminuir a chance de overflow • aumentar a precisão