Как преобразовать -1x10 ^ 200 в стандарт IEEE 754 с двойной точностью - PullRequest
0 голосов
/ 11 ноября 2018

Итак, как и выше, я хочу найти в IEEE 754 представление -1x10 ^ 200.

Я знаю, что мы можем получить знак, равный 1, поскольку у нас отрицательное число. Однако я не уверен, как найти мантиссу / экспоненту. Моя первоначальная идея состояла в том, чтобы преобразовать 10 ^ 200 в 2 ^ x. Однако х не является целым числом. Поэтому я полагаю, что нам нужно как-то получить дробь, каким-то образом разделив 10 ^ 200. Теоретически можно использовать очень длинное деление, но я ищу более элегантный ответ, который можно сделать без высокоточного калькулятора.

1 Ответ

0 голосов
/ 11 ноября 2018

−10 200 нельзя представить в базовом 64-битном двоичном формате IEEE-754. Ближайший номер, который может быть представлен, -99999999999999996973312221251036165947450327545502362648241750950346848435554075534196338404706251868027512415973882408182135734368278484639385018108 8188188188188188181881881881881888188188188188188188188188188188188188188188188188188188188188188188188188188188188188188188188188188188188188188188188188188188188188188188188188188188188188188188188188188188188188188188188188188188188188188188188182 0881 5255 0881 8488

Кодировка этого в 64-битном формате - 0xe974e718d7d7625a. Он имеет знак - (кодируется как 1 в бите 63), показатель степени 664 (кодируется как 1687 или 0x697 в битах с 62 по 52) и значение 0x1.4e718d7d7625a (кодируется как 0x4e718d7d7625a в битах с 51 по 0).

Учитывая, что показатель степени равен 664, вы можете найти значение и, поделив 10 200 на 2 664 , записав результат в двоичном виде и округлив после 52 битов после радикальной точки , Альтернативно, после деления на 2 664 , умножьте на 2 52 и округлите до целого числа.

...