Em sistemas little-endian, esse é o resultado da representação de strings, floats e duplas na memória. Começando com "A", 65, ou 0x41, como float ( od -t fF
), isso corresponde a
00000000000000000000000001000001
que é 9.1⋅10 -44 (consulte este útil conversor ) - um bit 0 para o sinal (positivo), 0 expoente (que é polarizado, por -126 para um float) e uma fração, 2 -17 + 2 -23 . O valor representado é assim (2 -17 + 2 -23 ) x2 -126 (veja Wolfram Alpha ). Adicionando uma nova linha produz
00000000000000000000101001000001
que é 3.678⋅10 -42 .
O uso de duplas ( od -t fD
) adiciona mais quatro bytes de zeros à frente do número, o que não altera o sinal nem o expoente, e reduz a fração ainda mais, o que, além do maior viés de duplas (- 1022), resulta nos números muito pequenos que você vê (veja este outro conversor que usa duplas ): “A” é (2 -46 + 2 -52 ) × 2 -1022 (veja Wolfram Alpha )," A "seguido por uma nova linha é (2 -41 + 2 -43 + 2 -46 + 2 -52 ) × 2 -1022 (consulte Wolfram Alpha ).