Что бы ответить на Ваши вопросы я лучше рассмотрю пример.
Формат бит числа double (IEEE Standard 754):
seeeeeeeeeeemmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm
, где s - знак числа ( 1 бит);
e - экспонента со смещением 1023 (11 бит);
m - мантисса (52 бит).
Нормализованное значение числа, зашифрованного в этом виде:
V = (-1)^s 2^e × 1.f (normalized)
Дано 48.625 = 32 + 16 + 1/2 + 1/8 = 110000.101 = 110000.101 * 1 = 110000.101 * 2^0
Чтобы представить в нормализованном виде, нужно перенести запятую после первой его
цифры. Это будет просто единица для числа с целой частью и первая единица после
запятой (первая значащая) для дроби без целой части.
После этого нужно скорректировать порядок.
110000.101 * 2^0 = 1.10000101 * 2^5
Прибавим к порядку 5 смещение 1023, получается 1028. Это число как раз из 11 цифр в
двоичной форме: 10000000100
Все, что после точки - наша мантисса.
Формируем цепочку бит слева направо начиная от 63-го.
бит 63 будет нулевым, так как число положительное.
Биты 62…52 - наш порядок 10000000100
С бита 51 пошла мантисса: 1000010100000000000000000000000000000000000000000000
Итого:
0 10000000100 10000101 00000000000000000000000000000000000000000000
Т.е. все понятно. Дальше я встрял. А если число задано как 48.625E+100 ? Я не могу сформулировать внятно задачи. Допустим, что это число 48.625E+1. Тогда можно убрать десятичную экспоненту и раскладывать на двоичные дроби число 486.25 = 111100110.01. А если десятичная экспонента большая положительная? Получается, что дробей не будет и задача превращается в нахождение дополнительного сдвига. А если отрицательная большая?