No sistema de ponto flutuante normalizado SPF
, represente, em cada caso, o valor arredondado e o arredondado por corte (truncado) das seguintes operações:
Passo 1
O enunciado pede para somar os dois números em ponto flutuante e mostrar, para essa operação, o resultado com arredondamento (para o formato) e o resultado por corte (truncamento). As informações dadas são:
- Formato SPF
. - Primeiro operando:
. - Segundo operando:
.
Passo 2
Vou explicar o que significa o formato
porque isso é essencial para saber como representar o resultado:
- A base é
. - O número de dígitos significativos (precisão) é
. Aqui isso significa que a mantissa normalizada tem exatamente três dígitos binários após o ponto na forma usada no enunciado (isto é, mantissa do tipo com para normalização em binário). - O expoente mínimo é
e o máximo é . Ou seja, depois de normalizar, o expoente final deve ficar entre e .
Observação sobre normalização (explicando com calma): em binário normalizado, o primeiro dígito não-nulo depois do ponto é
. No enunciado os números já estão nessa forma: por exemplo
tem os três dígitos
e
.
Passo 3
Convém também entender os valores exatos (para checar resultado):
- Calcular o valor decimal/binary de cada operando:
Logo Logo - Soma exata:
Em binário isso é exatamente
.
Passo 4
Para fazer a soma em ponto flutuante precisamos alinhar expoentes. O maior expoente entre os dois operandos é
(do primeiro). Vamos escrever ambos com expoente
.
- Primeiro operando já está com expoente
: - Segundo operando tem expoente
. Para mudar o expoente para devemos dividir a mantissa por (deslocar um bit à direita):
Expliquei a forma
: ao deslocar para a direita, acrescenta-se um zero à esquerda do campo de fração; mantive aqui quatro dígitos para mostrar bits extras (guard/round) durante a soma.
Também expando o primeiro operando com um bit extra para alinhar comprimentos:
Agora ambos têm 4 dígitos escritos para a soma:
e
.
Passo 5
Somamos as mantissas (todas em expoente
):
Detalhe do soma bit a bit:
-
(LSB) -
com carry - somando os próximos bits com carry acaba gerando um
na posição à esquerda do ponto fracionário, dando no conjunto.
O resultado da soma das mantissas é
. Para ficar na forma normalizada do enunciado (mantissa começando por
com expoente ajustado), deslocamos um bit para a direita e incrementamos o expoente em
:
Passo 6
Agora devemos arredondar/truncar para o formato com
dígitos na mantissa (ou seja, manter apenas três bits após o ponto em
).
O resultado antes do ajuste final tem mantissa estendida
. Os três primeiros bits após o ponto são
. Os bits seguintes (para decidir arredondamento) são todos zeros aqui: os bits além do terceiro são
.
- Arredondamento para o mais próximo: como os bits “descarregados” são todos zeros, não há necessidade de incrementar; o valor arredondado é exatamente
- Truncamento (corte): cortando os bits após os três primeiros também dá
Ou seja, neste caso específico o resultado exato é exatamente representável no formato pedido, então tanto arredondamento quanto truncamento coincidem.
Passo 7
Verificação final do expoente: o expoente final é
, que está dentro do intervalo permitido
. Logo a representação é válida no formato SPF dado.
Resposta
Arredondado:
Truncado:
Truncado: