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 e o menor número positivo nele representável?
Qual é o maior e o menor número positivo nele representável?
Passo 1
O enunciado dá as seguintes informações que vou usar:
- 1 bit para o sinal;
- 7 bits para o expoente;
- 8 bits para a mantissa;
- adota-se truncamento quando necessário.
A pergunta que preciso responder é: qual é o maior e qual é o menor número positivo representável nesse formato de ponto flutuante?
Passo 2
Primeiro preciso lembrar como se interpreta um formato binário de ponto flutuante (vou explicar devagarinho para você poder reproduzir isso na prova):
- O campo de expoente tem
bits. O bias (viés) é dado por
Substituindo
temos
-
Os valores do campo de expoente (chamo de
) têm três tipos de significado: -
reserva-se para zero e números subnormais (denormalizados); -
são expoentes normais; -
(todos 1) é reservado para infinito e NaN.
Com, isso dá normal variando de até , e reservado.
-
-
A mantissa tem
bits. Para números normais existe o bit implícito (leading 1): o significando (mantissa com o 1 implícito) vale
onde os
s são os bits da fração. Para subnormais o
implícito não existe, então o significando é
.
- Fórmulas de valor:
- Para número normal (com
):
- Para número subnormal (com
e fração ):
- Para número normal (com
Passo 3
Vou calcular o maior número positivo finito possível (ou seja, sinal
, expoente máximo normal
e mantissa toda 1) e o menor número positivo não nulo (isto é, menor subnormal).
Começo pelo maior.
- O maior expoente normal é
. O expoente efetivo é
- A fração máxima (todos os
bits iguais a 1) é
Logo o significando máximo é
- Portanto o maior valor positivo finito é
Passo 4
Agora calculo esses potências em inteiro para dar o valor decimal exato:
- Já se conhece
. - E
.
Subtraindo:
Então o maior número positivo finito representável é
.
Passo 5
Agora o menor número positivo não nulo (menor subnormal):
-
Para subnormais o expoente usado é
. Com isso dá . -
O menor subnormal corresponde à fração com apenas o bit menos significativo igual a 1, ou seja
. -
Então o menor valor positivo é
Passo 6
Faço aproximações decimais para dar uma ideia da escala:
-
em notação decimal é aproximadamente . Usando a vírgula como separador decimal (conforme pedido): . -
Para referência, o menor valor normal positivo (primeiro normal) ocorre com
e fração zero e vale , aproximadamente .