Sei sulla pagina 1di 24

Nmeros Racionais - IEEE-754-1985

Formato

SP ocupa exatamente 32 bits:


1 bit para sinal do significando - s;
significando com 24 bits de preciso, primeiro
sempre 1, exceto quando denormalizado, onde 0
(1 bit implcito);
expoente e de 8 bits, com polarizao = 127;

31 30

23 22

Forma Geral:
(-1)s x 1.f x 2e-127

Frao (binrio puro) - f


Obs: sf representao
Expoente (bias=127) - e
em SM!
Sinal do significando - s
Aritmtica: reviso em 11/novembro/2004 - Moraes e Ney

IEEE-754-1985 - Exemplos
1) Nmero positivo, maior que zero
31 30

23 22

Forma Geral:
(-1)s x 1.f x 2e-127

0 10000001 01000000000000000000000

((-1)0 x 1.01 x 2129-127)2= (+1.01 x 22 )2 = (+5 )10


2) Nmero negativo, menor que zero
31 30

23 22

1 01111110 01110000000000000000000

((-1)1 x 1.0111 x 2126-127 )2 = (- 0.10111)2 = (-0.71875)10


Aritmtica: reviso em 11/novembro/2004 - Moraes e Ney

Valores Especiais e Denormalizao


Principal

novidade do padro existncia de valores


especiais, que permitem tratar excees:
valores infinitos;
diviso por zero;
operaes para os quais os reais no so fechados, como
raiz quadrada;

Denormalizao

permite situaes de underflow gradual,


tal como:0 00000001 00000000000000000000000 (=2-126)
dividido por 25, representvel se o primeiro dgito for 0 ao
invs de 1, por: 0 00000000 00010000000000000000000.

Aritmtica: reviso em 11/novembro/2004 - Moraes e Ney

Valores Especiais e Denormalizao


H

5 casos que definem o valor de nmero em algum


formato do padro IEEE-754 (exemplo para SP):
1)e=255,f0
2)e=255,f=0
3)0<e<255
4)e=0,f0
5)e=0,f=0

Aritmtica: reviso em 11/novembro/2004 - Moraes e Ney

v=NaN(notanumber)
v=(1)s
v=(1)sx(1.f)x2e127
v=(1)sx(0.f)2126
v=(1)sx(0)(zero)

Parmetros e outros Formatos


Os

diferentes formatos e valores para os parmetros


que os definem:
formato>

preciso
simples
(SP)

bitsde
preciso(p)
Emax

24

preciso
simples
estendida
(SE)
32

127

1023

1023

16383

Emn

126

1022

1022

16382

Polarizao
(bias)
Totaldebits

127

depende

1023

depende

parmetros

32
varivel,
exatamente 43,<64

Aritmtica: reviso em 11/novembro/2004 - Moraes e Ney

preciso
dupla(DP)
53

preciso
dupla
estendida
(DE)
64

64
varivel,
exatamente
79

Sumrio

Introduo

Aritmtica Inteira

Operaes em nmeros sem sinal (naturais)


soma,

subtrao, multiplicao e diviso

Representaes de nmeros com sinal (inteiros)

Aritmtica

ArqI

no Inteira (racionais)

Representaes de racionais
Operaes com o padro IEEE-754

Aritmtica: reviso em 11/novembro/2004 - Moraes e Ney

Operaes com o Padro IEEE-754

Operao

mais fcil de se implementar em hardware:


multiplicao e no soma
adaptao de significandos devido a diferentes expoentes
complica soma;
multiplicao direta, multiplica significandos e soma
expoentes, exceto quando resultado caso especial;

Veremos

aqui introduo a ambos, multiplicao e

soma.

Aritmtica: reviso em 11/novembro/2004 - Moraes e Ney

Multiplicao no Padro IEEE-754


3

Passos:
multiplicar significandos (no frao, desempacotar o
nmero) usando multiplicao inteira, sem sinal
(SM);
calcular expoente
lembrar da polarizao.

arredondamento devido ao aumento da preciso aps


operao;

Aritmtica: reviso em 11/novembro/2004 - Moraes e Ney

Multiplicao no Padro IEEE-754


Exemplo de multiplicao:
1 10000010 00000000000000000000000 = -1x2 3 = -8
0 10000011 00000000000000000000000 = 1x2 4 = 16

1) Desempacotando -> 1.0

x 1.0 = 1.0

logo, resultado tem a forma:


1 ???????? 00000000000000000000000

2) Expoente - frmula para clculo do expoente:


(exp polarizado(e1+e2))2s= (exp polarizado(e 1) + (exp
polarizado(e2) + (-polarizao)2s , ou seja,
10000010 = 130
10000011 = 131
+10000001 =-127
10000110 = 134=e
-> E=134-127=7!

Aritmtica: reviso em 11/novembro/2004 - Moraes e Ney

Multiplicao no Padro IEEE-754


3) arredondamento - preciso importante:
casos de arredondamento (em decimal, anlogo a binrio):
a)

1.23
x 6.78
8.3394

r=9, 9>5, ento arredonda p/8.34

b)

2.83
x 4.47
12.6501

r=5, e pelo menos um dgito aps


diferente de 0, arredonda p/ 1.27x10 1

c)

1.28
x 7.81
09.9968

r=6, 6>5, ento arredonda p/ 1.00x10 1

em binrio, meio da faixa (5 em decimal) dgito 1!


negrito - dgitos significativos; aps, dgito arredondador, r.
Aritmtica: reviso em 11/novembro/2004 - Moraes e Ney

10

Multiplicao no Padro IEEE-754


3) arredondamento (continuao)
se r menor que 5 - resultado pronto;
se r maior que 5 - soma-se 1 ao nmero em negrito;
se arredondador exatamente 5 (em binrio, 1) - examinar bits
seguintes, at achar um diferente de 0 ou chegar ao fim:

tcnica - usa o bit grudento (sticky bit), durante a multiplicao, o


OU lgico de todos os bits a partir do bit r;
Caso 1 - desloca um bit p/ esq; Caso 2 - incrementa expoente.

Produto (p=6)
Caso 1: x0=0

x0 x1 . x2 x3 x4 x5 g

x1 . x2 x3 x4 x5 g

Caso 2: x0=1

x0 . x1 x2 x3 x4 x5

Aritmtica: reviso em 11/novembro/2004 - Moraes e Ney

sticky
sticky

11

Multiplicao no Padro IEEE-754


3) arredondamento (continuao)
aps acertar expoente e resultado, pode-se finalmente
arredondar:

se r=0, resultado correto;


se r=1 e s=1, soma P+1 para obter o produto dos significandos;
se r=1 e s=0, exatamente no meio da faixa - IEEE-754 possui quatro
modos possveis, cujo comportamento depende do sinal do
resultado.

Aritmtica: reviso em 11/novembro/2004 - Moraes e Ney

12

Multiplicao e Denormalizao

Controlar underflow complicado, devido aos denormalizados:


por exemplo, 1x2-64 X 1x2-65 1x2-129, expoente no representvel no formato
normalizado, mas representvel como 0.125x2 -126;
se o expoente no polarizado for menor que -126, produto deve ser deslocado
bit a bit e expoente incrementado at -126. Se todo o significando se anular, a
sim, houve underflow;

Quando um dos operandos denormalizado, geram-se 0s esquerda;

Denormalizados causam montes de problemas p/ multiplicao;

Multiplicadores de alto desempenho ignoram denormalizados,


gerando excees para o software cuidar;

Denormalizados no so freqentes, perda em tempo


estatisticamente pequena.

Aritmtica: reviso em 11/novembro/2004 - Moraes e Ney

13

Multiplicao, 0 e Preciso

Se um dos multiplicandos 0, acelera-se multiplicao testando:


antes - ambos operandos;
depois - neste caso, cuidado com 0 x , resultado deve ser NaN;
sinal deve ser mantido, +0 diferente de -0;

Ao multiplicar pode-se precisar do dobro de bits em inteiros;


aplicao define se aceitvel apenas a metade inferior do resultado
ou se todo o resultado deve ser usado;

Em linguagens de alto nvel, multiplicao inteira sempre usam a


primeira opo, mas ponto flutuante diferente, e as duas so
usadas, utilidade grande na soluo de equaes lineares;

Aritmtica: reviso em 11/novembro/2004 - Moraes e Ney

14

Adio no Padro IEEE-754

Tipicamente, operao em ponto flutuante recebe dois nmeros


de mesma preciso e retorna resultado com mesma preciso, p;

Algoritmo ideal (erro menor) calcula resultado exato e arredonda;

Multiplicao funciona assim;

Para soma, existem procedimentos mais efetivos;

Exemplo com nmeros de 6 bits: 1.100112 e 1.100012 x 2-5;

Usando um somador de 6 bits, tem-se:

Aritmtica: reviso em 11/novembro/2004 - Moraes e Ney

1.10011
+ 0.00001
1.10100
15

Adio no Padro IEEE-754

No exemplo, bit descartado (r) 1. Logo examina-se o resto;

Novamente, apenas se precisa saber se um destes bits no-zero,


e pode-se assim usar o sticky bit, como na multiplicao;

Logo, para somar nmeros de p bits, um somador de p bits chega,


desde que se guarde o primeiro bit descartado (r) e o sticky bit
correspondente;

No exemplo, o sticky 1, e o resultado final fica 1.101012;

Subtrao similar, se se trabalha em complemento de dois;

Aritmtica: reviso em 11/novembro/2004 - Moraes e Ney

16

Adio no Padro IEEE-754

Outro exemplo com preciso de 6 bits:

Devido ao vai-um esquerda, (r) no descartado. Como o sticky bit 1, o resultado correto 10.00112;

Outro exemplo com preciso de 6 bits, usando complemento de 2:

1.11011
+0.0101001

1.11011
+ 0.01010
10.00101

1.00000
-0.00000101111
+1.11111010001

1.00000
+ 1.11111
0.11111

Aritmtica: reviso em 11/novembro/2004 - Moraes e Ney

17

Adio no Padro IEEE-754

Devido ao bit de guarda ter de ser acrescentado (pois bit mais significativo foi zerado tem-se 0.111110 2 como resultado inicial;

O bit (r) 1 e o sticky bit 1 (vem de 0001);

Logo, o resultado final 0.1111112;

A seguir, apresenta-se o algoritmo para somar dois nmeros representados no formato IEEE-754-1985.

Aritmtica: reviso em 11/novembro/2004 - Moraes e Ney

18

Adio no Padro IEEE-754


Sejam dois nmeros (a1 e a2) a serem somados. Os expoentes e
significandos so denotados por ei e si, respectivamente. Os passos:
1) Se e1<e2, troque operandos (para que diferena d=e1-e2 >=0). Faa o
expoente do resultado igual a e1, temporariamente;
2) Se sinais de a1 e a2 diferem, substitua s2 por seu complemento de 2;
3) Coloque s2 em um registrador de p bits e desloque-o d= e1-e2
posies para a direita (entrando com 1s se s2 foi complementado
no passo 2). Dos bits deslocados para fora do registrador, guarde o
ltimo em um flip-flop g, o penltimo em um flip-flop r e armazene
o OU de todos os restantes como sticky bit.
Aritmtica: reviso em 11/novembro/2004 - Moraes e Ney

19

Adio no Padro IEEE-754


4) Compute o significando preliminar S=s1 + s2, somando s1 ao
registrador de p bits contendo s2. Se os sinais de a1 e a2 so
diferentes, o bit mais significativo de S 1 e no h vai-um, ento S
negativo. Substitua S pelo seu complemento de 2. Isto s pode
ocorrer quando d=0;
5) Desloque S como segue. Se os sinais de a 1 e a2 so iguais e houve
vai-um no passo 4, desloque S para a direita 1 bit, preenchendo a
posio de mais alta ordem com 1 (o vai-um). Seno, desloque S
para a esquerda at normaliz-lo. Ao deslocar, no primeiro bit
preencha a posio de ordem inferior com o bit g. Aps, insira zeros.
Ajuste o expoente do resultado de acordo.
Aritmtica: reviso em 11/novembro/2004 - Moraes e Ney

20

Adio no Padro IEEE-754


6) Ajuste r e s (round e sticky bit). Se S foi deslocado direita no
passo 5, faa r bit de mais baixa ordem de S antes de deslocar e s
g OR r OR s. Se no houve deslocamento, faa r g, s r OR
s. Se houve um nico deslocamento esquerda, no mude r nem s.
Se houve dois ou mais deslocamentos, faa r 0 e s 0. (no
ltimo caso, dois ou mais deslocamentos s podem acontecer
quando a1 e a2 possuem sinais opostos e o mesmo expoente, em cujo
caso a computao s1 + s2 ser exata);
7) Arredonde S usando as regras de arredondamento. Se o
arredondamento causar vai-um, desloque S direita e ajuste o
expoente. Isto o significando do resultado;
Aritmtica: reviso em 11/novembro/2004 - Moraes e Ney

21

Adio no Padro IEEE-754


8) Compute o sinal do resultado. Se a 1 e a2 tm o mesmo sinal, este o
sinal do resultado. Se a1 e a2 possuem sinais diferentes, ento o sinal
depende de qual dentre a 1 e a2 negativo, se houve troca no passo 1 e
se S foi substitudo pelo seu complemento de 2 no passo 4. A tabela
abaixo resume os casos:
Troca
Sim
Sim
No
No
No
No

Complemento
No
No
Sim
Sim

Aritmtica: reviso em 11/novembro/2004 - Moraes e Ney

Sinal(a1)
+
+
+
-

Sinal(a2)
+
+
+

Sinal(resultado)
+
+
+

22

Adio no Padro IEEE-754


fazer:

1.001 * 2-2 + 1.111 * 20 ( a1 + a2)


passo 1:
e1 < e2 , logo troca
calcula a distncia entre expoentes: (d=2)
expoente inicial igual ao expoente mximo (exp=0)
passo

2:

sinais iguais, logo no nega s2.


passo

3:

desloca s2 (1.001 aps a troca) direita dois bits


gerando s2=0.010, g=0, r=1, s=0

Aritmtica: reviso em 11/novembro/2004 - Moraes e Ney

23

Adio no Padro IEEE-754


passo

4:

1.111 + 0.010 = (1)0.001 S=0.0001 com vai-um=1


passo

5:

como houve vai-um desloca S direita, S=1.000,


exp=exp+1, exp=1
passo

6: atualiza g,r,s

r(bit de mais baixa ordem da soma)=1, s=g OR r OR s=0 OR


1 OR 0 =1
passo

7: arredonda

r=1e s=1, ento arredonda para cima S=S+1, S=1.001


passo

8: calcula o sinal

Ambos sinais negativos, ento resultado negativo.


Aritmtica: reviso em 11/novembro/2004 - Moraes e Ney

24

Potrebbero piacerti anche