Qual valor hexadecimal melhor aproxima o número
conforme a norma IEEE 754 ?
(a)
(b)
(c)
(a)
(b)
(c)
Passo 1
O enunciado pergunta qual valor hexadecimal (no formato IEEE 754 single-precision) melhor aproxima o número
. As opções dadas são:
,
,
.
Informações relevantes que temos do enunciado (implícitas na pergunta):
Informações relevantes que temos do enunciado (implícitas na pergunta):
- Queremos a representação conforme a norma IEEE 754 (single precision), ou seja:
- bit de sinal:
bit, - expoente com bias:
bits, bias , - mantissa (fraction) com
bits.
- bit de sinal:
- O número é positivo,
.
Passo 2
Identificar sinal, expoente e mantissa desejados no formato normalizado.
- Como o número é positivo, o bit de sinal é
. - Um número em IEEE 754 single é representado como
onde
é o expoente real e o campo do expoente armazenado é
.
- Para achar
e a fraction, é prático escrever
Escolhemos
tal que
. Uma forma direta é testar potências de
: calcular
para k inteiro até que
.
Passo 3
Encontrar
fazendo o escalonamento por potências de
.
- Calculemos
. (Escolhemos porque é um número grande que provavelmente traz para a faixa .) - Primeiro,
. - Multiplicando:
Fazendo a conta (multiplicação cuidada), obtemos
- Esse
satisfaz , portanto o expoente real é . - O campo do expoente armazenado é então
Passo 4
Converter o expoente armazenado para binário e hex.
-
em binário é . - Em hex, esse byte é
.
Mas atenção: na montagem final do word IEEE 754 o expoente ocupa os bitsa , e a mantissa ocupa os bits a . Iremos montar o inteiro de 32 bits como
Passo 5
Determinar a fraction (mantissa) a partir de
.
- Temos
. - A fraction
. - Agora precisamos representar
em binário com bits: isso faz-se multiplicando por repetidamente e anotando a parte inteira em cada passo (algoritmo clássico de conversão de fração para binário).
Passo 6
Converter
em bits (mostrando cada passo).
Começamos com .
Multiplicamos por e registramos a parte inteira (0 ou 1) como o próximo bit da mantissa:
Começamos com
Multiplicamos por
-
, resto . -
, resto . -
, resto . -
, resto . -
. -
. -
. -
. -
, resto . -
. -
. -
. -
, resto . -
, resto . -
, resto . -
. -
. -
, resto . -
, resto . -
, resto . -
, resto . -
, resto . -
, resto .
Portanto os
primeiros bits da mantissa (do mais significativo para o menos) são:
Passo 7
Verificar o bit de arredondamento (guard) e o sticky bit para arredondar corretamente.
- O próximo bit (o bit
, chamado de bit de arredondamento) foi obtido ao continuar o processo: - A partir do resto após
, , então e o resto seguinte é , que é não nulo.
- A partir do resto após
- Como o bit de arredondamento
e existem bits subsequentes não nulos (sticky = 1), a regra “round to nearest, ties to even” manda arredondar para cima (i.e., somar à mantissa inteira de bits). - Convertendo os
bits encontrados para inteiro (mantissa atual) e somando pelo arredondamento:
Montagem inicial sem arredondamento (em três grupos de bits):
- primeiros
bits (b1…b8): = = . - próximos
bits (b9…b16): = = . - últimos
bits (b17…b23): = = .
Calculando o inteiro da mantissa:
Arredondando (somando
) dá
Passo 8
Montar o inteiro de 32 bits final e converter para hexadecimal.
- O campo do expoente armazenado é
. Em operação inteira:
- Calcule
. - Somando a mantissa:
. - Agora convertemos esse inteiro
para 4 bytes (hex): - Byte mais significativo =
decimal = . - Próximo byte =
decimal = . - Próximo byte =
decimal = . - Byte menos significativo =
decimal = .
- Byte mais significativo =
- Assim o word em hex, no formato usual, é
Passo 9
Checar coerência com as opções:
- A opção (c) é exatamente
, que é a representação IEEE 754 single-precision mais próxima do número pedido. - As outras opções (a) e (b) são diferentes e representam valores muito distintos (por exemplo, expoentes armazenados diferentes).