У меня проблемы с преобразованием 19861119 в формат ieee с плавающей запятой (одинарная точность).Я надеюсь, что кто-то может сказать мне, где я заблудился.
В двоичном формате значение равно b1:00101111:00001110:01111111
(используется: для отметки каждых 8 битов от rhs), что составляет b1.00101111:00001110:01111111 * 2^24
.Таким образом, значение с плавающей запятой равно b00101111:00001110:01111111
, а смещенная экспонента равна 24 + 127 = 151 = b10010111
.Длина с плавающей точкой - 24 бита, но формат ieee позволяет использовать только 23 бита, что мне кажется проблематичным.Не хватает ли формату достаточной точности для сохранения даты в ггггммдд?
Когда я записываю вывод из Python struct.pack("f", 19861119)
в файл и смотрю в шестнадцатеричном редакторе, я вижу x4087974b
.После учета порядка байтов это x4b978740
.Итак, Python написал смещенную экспоненту b01010111 = 87
и число с плавающей точкой b0010111:10000111:01000000
, которое мало похоже на любое из чисел, которое я вычислил.Что я пропустил?
Заранее спасибо,
Ян