Estou fazendo meu HW, mas travei. Preciso descobrir a representação de precisão única do número 2 * 2^{-151}.
Acho que este é um número subnormal/desnormalizado, portanto preciso definir a parte do expoente como zero; para a parte da mantissa, como tenho apenas 23 bits, o menor que poderia definir seria 2^{-23}. Assim, o menor número desnormalizado que eu poderia representar é
2^{-23} * 2^{-126} = 2^{-149}.
Como eu poderia representar 2 * 2^{-151} ? Eu recebo 0 neste caso? Poderíamos usar C/C++ para verificar isso?
O formato binário32 IEEE-754 (ponto flutuante binário de “precisão única”) não pode representar o número 2 −151 .
Se uma operação for executada para converter 2 −151 em binário32 de outro formato (como de um literal no código-fonte ou do formato binário64 [“precisão dupla”]), então o resultado é arredondado de acordo com uma escolha de regras de arredondamento. A regra geral padrão é arredondar para o empate mais próximo para o par. Os dois números representáveis em binário32 que estão mais próximos de 2 −151 são 0 e 2 −149 . 0 é o mais próximo, então é o resultado. Com uma regra de arredondamento “para cima”, em direção a +∞, o resultado seria 2 −149 .