No sistema de ponto flutuante normalizado
, represente em cada caso, o valor arredondado das seguintes operações:
b)
b)
Passo 1
O enunciado pede: representar, no sistema de ponto flutuante normalizado
, o valor arredondado da operação
Informações que temos (peguei tudo do enunciado):
- Base
. - Precisão
dígitos binários na mantissa (isto é, cada mantissa tem exatamente 3 dígitos com o primeiro dígito não nulo). - Limites de expoente:
e . - Os números são normalizados: a mantissa tem a forma
(ou seja, o primeiro dígito é ). - Devemos retornar o resultado arredondado para o formato representável no sistema (vou usar o arredondamento para o mais próximo, critério usual: round-to-nearest).
Passo 2
Entender como se armazenam números neste SPF (pequena aula mastigada).
- Um número normalizado neste sistema tem a forma
onde
, logo a mantissa tem
(um bit 1 seguido de
bits fracionários).
- Exemplo:
é um número válido porque tem 3 dígitos na mantissa ( ) e expoente dentro do intervalo. - Para somar dois números com expoentes diferentes, primeiro alinham-se os expoentes (deslocando a mantissa do menor expoente à direita), realiza-se a soma exata em binário e depois normaliza e, por fim, arredonda para
dígitos.
Passo 3
Normalizar os termos individuais (converter cada parcela para forma normalizada
quando possível).
- Para
: Então podemos escrever . A mantissa tem exatamente 3 dígitos (1,0,1), portanto esse termo é representável exatamente no sistema. - Para
: A mantissa tem 3 dígitos (1,1,1), também representável exatamente.
Passo 4
Alinhar expoentes e somar em binário (faça comigo passo a passo).
- Os expoentes normalizados são
e . Para facilitar a soma, alinhamos ambos para o maior expoente (que é ). Então escrevemos: (isso volta ao formato não-normalizado , mas é útil para somar frações com expoente ). - Agora somamos as mantissas com expoente
:
escrevendo com a mesma quantidade de casas após o ponto:A soma binária resulta em . Em notação normalizada isso é Então a soma exata é .]
Passo 5
Explicar como arredondar para a precisão
(regra usada: arredondamento para o mais próximo).
- Temos a mantissa exata
e queremos guardá-la com dígitos, isto é, (dois bits fracionários). - Escrevendo os dígitos da mantissa exata:
- Os dois primeiros bits fracionários que cabem são
e , então truncar daria . - A seguir vem o bit “guard” igual a
(próximo bit após os armazenáveis) e ainda há bits subsequentes (sticky) contendo pelo menos um (o próximo é ), logo há resto.
- Os dois primeiros bits fracionários que cabem são
- Regra round-to-nearest: se o bit guard é
e há algum bit 1 nos bits a seguir (ou se o guard é 1 e o LSB atual for 1 quando for caso de empate), devemos arredondar para cima. - Aqui guard
e resto (sticky) , portanto devemos arredondar para cima o campo armazenável . - Arredondando para cima
. - Não ocorre overflow da mantissa (1.01 ainda tem forma normalizada com primeiro dígito 1), então o expoente permanece
.
Passo 6
Resultado final em formato do sistema e significado decimal (confirmação).
- A representação arredondada é
- Em decimal, isto vale
. A soma exata era , então o valor representável mais próximo é , coerente com o arredondamento feito.