Considere o sistema de aritmética de ponto flutuante
. Represente, nesse sistema, os seguintes números:
;
Passo 1
O enunciado pede: representar, no sistema de ponto flutuante
, o número
.
Informações dadas (importantes e explícitas):
significa que
- a base é
; - a precisão é
dígitos binários significativos (ou seja, o formato normalizado tem bit implícito seguido de bits da fração); - o expoente pode variar entre
e .
O que precisamos entregar: a representação normalizada deno formato (arredondada ao modo usual “arredondamento para o mais próximo”, adotado aqui).
Passo 2
Vamos separar a parte inteira e a parte fracionária de
:
A parte inteira
em binário é simples:
Passo 3
Agora convertemos a parte fracionária
para binário usando o método de multiplicar por
repetidamente (doubling). Em cada passo guardamos a parte inteira do produto como o próximo bit fracionário.
Cálculos (cada linha: multiplicação por
→ bit obtido → resto):
Portanto os primeiros bits fracionários (após o ponto) são
Passo 4
Juntando com a parte inteira, temos a representação binária não normalizada:
Para normalizar no formato
deslocamos o ponto 1 posição à esquerda:
Logo o expoente normalizado é
.
Passo 5
Precisamos armazenar
bits significativos binários. No formato normalizado isso corresponde a
bit implícito (o
à esquerda do ponto) mais
bits na fração. Tomamos os primeiros
bits da fração após o ponto na forma normalizada.
Na forma normalizada a sequência de bits após o ponto começa por:
(as duas primeiras zeros são: o segundo bit inteiro original
e o primeiro bit fracionário obtido acima). Então os
bits que cabem são
Assim a mantissa truncada seria
Passo 6
Agora tratamos o arredondamento para o mais próximo (round-to-nearest). Olhamos o próximo bit depois desses
bits guardados para decidir se incrementamos a mantissa.
O próximo bit (o décimo bit fracionário na forma normalizada) é igual a
(vimos acima que o bit seguinte é
da fração original, mas lembre: por causa do deslocamento, o décimo bit após o ponto na forma normalizada corresponde a
da sequência original, que vale
). Portanto o bit de seguimento é
, logo não há arredondamento para cima — mantemos a mantissa como está.
(Se estivesse exatamente na metade teríamos que aplicar a regra de empate, mas aqui não é o caso.)
Passo 7
Verificamos o expoente armazenado:
está dentro do intervalo
, então não há underflow/overflow.
Portanto a representação final no sistema
é o número positivo com mantissa arredondada