Considere o sistema de aritmética de ponto flutuante
normalizado:
Os seguintes números na base 10 podem ser representados em F por truncamento (pertencem a F ou ocorre underflow ou overflow)? Represente-os nesse sistema e indique underflow ou overflow se for o caso.
Os seguintes números na base 10 podem ser representados em F por truncamento (pertencem a F ou ocorre underflow ou overflow)? Represente-os nesse sistema e indique underflow ou overflow se for o caso.
Passo 1
O enunciado pede: dado o sistema de ponto flutuante normalizado
, verificar se “os seguintes números na base 10” podem ser representados por truncamento (ou se ocorre underflow/overflow), e representar cada um no sistema (ou indicar underflow/overflow).
Informações fornecidas explicitamente:
Informações fornecidas explicitamente:
- O sistema é
normalizado.
Importante: a lista dos números decimais a serem testados NÃO foi fornecida no enunciado que recebi. Sem essa lista de números concretos não há como fazer as representações pedidas nem afirmar, caso a caso, se há underflow ou overflow. Portanto, não posso entregar as respostas numéricas finais sem os números a testar.
Vou, no entanto, explicar passo a passo e de forma didática como se procede para qualquer número: como interpretar
, como converter um número decimal para esse formato por truncamento, como detectar underflow e overflow e como escrever o resultado final. Assim, quando você me mandar a lista de números (ou fizer na prova), você terá o procedimento completo para aplicar rapidamente.
Passo 2
O que significa
(interpretação padrão das notações usadas em FP):
-
é a base (sistema binário). -
é a precisão: o número de dígitos na mantissa (número total de dígitos significativos na base ). Para números normalizados em base , a mantissa tem a forma (ou seja, o primeiro dígito é sempre e somando todos os dígitos temos dígitos: o mais três dígitos fracionários). - Os últimos dois parâmetros
e costumam indicar o menor e o maior expoente permitidos, isto é e . Vou usar literalmente e (ou seja, os expoentes possíveis são ). Observação: em muitos textos aparece negativo (ex.: ); se o exercício original tivesse o procedimento é o mesmo, apenas os limites de underflow/overflow mudam. Se você tiver dúvida, confirme se era ou ; aqui eu explico com os parâmetros tal como escritos.
Resumo da forma de um número representável (normalizado) em
:
Cada
é
ou
. São, portanto, possíveis
mantissas diferentes (com sinal +/−) e dois expoentes, totalizando um conjunto finito de números representáveis.
Passo 3
Regra geral para testar um número decimal
(passos práticos que você deve aplicar na prova):
- Converter
para binário: separar parte inteira e parte fracionária e converter cada uma. - Parte inteira: dividir por 2 sucessivamente (ou escrever em binário de forma direta).
- Parte fracionária: multiplicar a parte fracionária por 2 repetidamente; a parte inteira de cada produto dá os bits sucessivos.
- Escrever o binário em forma normalizada:
. Aqui é escolhido para deslocar o ponto binário de modo que exista exatamente um dígito 1 antes do ponto (para números não nulos). - Mantissa: após normalizar, mantenha os
dígitos significativos na mantissa. Em base 2 normalizada isso significa manter o dígito inicial 1 mais os próximos bits fracionários: . - Truncamento: como o enunciado pede representação por truncamento, você deve simplesmente cortar (ignorar) todos os bits fracionários além de
(sem arredondar). Ou seja, se a mantissa normalizada completa fosse , a versão por truncamento fica . - Expoente: depois da normalização, determine o expoente inteiro
. Verifique se está dentro da faixa permitida . No nosso caso assumido . - Se
então ocorre overflow: o número é demasiado grande para o sistema. - Se
então ocorre underflow: o número é demasiado pequeno em magnitude para ser representado (no sistema normalizado).
- Se
- Valor aproximado final: o número representado é
que você pode converter de volta para decimal se quiser comparar com o
original.
Passo 4
Explicando, passo a passo, a conversão decimal → binário (com exemplos curtos):
- Exemplo de conversão da parte inteira:
. Lendo restos de baixo para cima: . - Exemplo de conversão da parte fracionária:
. Logo . - Assim
.
Passo 5
Como normalizar e truncar (continuação do exemplo
):
- O binário
pode ser escrito como (deslocou-se o ponto 3 posições para a esquerda porque ). - Mantissa infinita (ou longa) seria
. Com dígitos mantemos . Por truncamento cortamos além do terceiro bit fracionário. Assim a representação por truncamento é:
- Verificação do expoente: aqui
. Como está na faixa , não há overflow nem underflow. - Converter de volta para decimal para ver o valor representado:
Multiplicando por : Observação: o truncamento fez o ser aproximado por no sistema (isto é, perda de precisão esperada).
Passo 6
Como detectar underflow e overflow numericamente (limiares):
- Maior magnitude positiva representável (usando
e a maior mantissa ):
Calcule explicitamente
. Assim
No caso assumido
:
Portanto qualquer número absoluto maior que
causa overflow (não é representável: excede
).
- Menor magnitude positiva representável (usando
e a menor mantissa normalizada ):
Se
(como estamos assumindo literal), então
Isto quer dizer que, com
, o menor número positivo normalizado representável é
. Qualquer número positivo menor que
(por exemplo
ou
) está abaixo de
e, sob a convenção de sistema normalizado sem subnormais, será underflow (não representável). Note que este comportamento é estranho se esperávamos
negativo; confirme
no enunciado original. Se
então
(bem diferente).
- Resumo prático: com os parâmetros literais
a gama de números positivos representáveis é aproximadamente (com sinais ± e saltos discretos). Fora desse intervalo ocorrem underflow (se muito pequeno) ou overflow (se muito grande).
Passo 7
Exemplo adicional rápido (um número pequeno):
.
- Converter:
(porque ). Normalizado: (expoente ). - Verificar expoente:
está abaixo de , portanto com esse número sofreria underflow (não é representável como normalizado). Se o enunciado aceitasse subnormais (denormalizados) poderíamos representá-lo de outro modo — mas o enunciado disse “normalizado”, então não há subnormais aqui.
Passo 8
Resumo do procedimento para você aplicar rapidamente na prova (check-list):
- Converter o número decimal para binário.
- Normalizar como
. - Calcular
. Se ⇒ overflow. Se ⇒ underflow. - Se
: truncar os bits da mantissa para ficar com dígitos no total (isto é, ). - Escrever o número representado e, se necessário, converter de volta para decimal para comparar erro.
Passo 9
Conclusão prática para o enunciado original: não posso dar respostas caso a caso porque a lista de números a testar não foi incluída. Se você me enviar esses números (por exemplo, uma lista como:
,
,
,
, etc.), eu aplico o procedimento acima para cada um, indicando a representação por truncamento e se há underflow ou overflow.
Resposta
Não é possível responder porque a lista dos números a serem testados não foi fornecida.