Um computador armazena números reais utilizando 1 bit para o sinal do número, 7 bits para o expoente e 8 bits para a mantissa. Admitindo que haja truncamento, como ficariam armazenados os seguintes números decimais? (Utilize o enunciado para responder às questões de 5 a 10).
Qual é o maior número menor que 20 nele representável?
Qual é o maior número menor que 20 nele representável?
Passo 1
Vou listar claramente o que o enunciado nos dá e o que ele pede. Dados do problema:
- Um formato de ponto flutuante com:
- 1 bit de sinal;
- 7 bits de expoente;
- 8 bits de mantissa (bits fracionários);
- Há truncamento da mantissa (ou seja, não há arredondamento, apenas corte dos bits além de 8).
O que se pede: - “Qual é o maior número menor que 20 nele representável?” — ou seja, dado esse formato, encontrar o maior valor representável que seja estritamente menor que
.
Passo 2
Explicando como funciona o formato (passo-a-passo, sem pular nada).
- Números normalizados em ponto flutuante são representados como
onde:
-
é a fração obtida a partir dos bits da mantissa (um número entre e neste caso); -
é o expoente real (um inteiro com sinal), obtido subtraindo-se o bias do expoente armazenado. - O bias para um campo de expoente com
bits é
Aqui
, então calculamos o bias no próximo passo.
Passo 3
Calcular o bias do expoente:
Passo 4
Converter
para forma binária normalizada.
- Primeiro, a representação inteira em binário:
- Normalizando (colocar como
):
Logo o expoente real é
e a mantissa fracionária (logo após o ponto binário) começa com
seguido por zeros infinitos.
Passo 5
Determinar os bits da mantissa armazenada (8 bits) aplicando truncamento.
- A parte fracionária normalizada é
(bits: ). - Truncando para 8 bits a mantissa armazena exatamente
Em inteiro isso vale
(porque
).
Passo 6
Determinar o campo do expoente armazenado.
- O expoente real é
. O expoente com bias é
- Em binário com 7 bits:
Passo 7
Concluir que
é exatamente representável neste formato.
- O número representado por esses campos é
Portanto
está representado exatamente por: sinal
, expoente
e mantissa
.
Passo 8
Como
é representável, o maior número menor que
será o predecessor imediato na malha de ponto flutuante com o mesmo expoente: ou seja, decrementar em uma unidade o campo inteiro da mantissa armazenada (quando possível) mantendo o mesmo expoente armazenado.
- O campo mantissa atual é
. O predecessor tem , cujo campo em bits é .
Passo 9
Calcular o valor correspondente ao predecessor (o maior representável menor que
).
- A fração armazenada passa a ser
. - Assim o valor é
Calculemos passo a passo:
Passo 10
Interpretação e conclusão didática curta:
- A diferença entre
e seu predecessor é o menor incremento representável na vizinhança de (o ULP na escala ), aqui igual a
- Então o maior número estritamente menor que
representável neste formato (com truncamento) é .