Не могу понять, как преобразовать этот научный # в IEEE 754 - PullRequest
0 голосов
/ 07 октября 2011

Я не могу понять, как конвертировать 2 * 10^33 в формат IEEE 754.

Я считаю, что бит знака равен 0 Я считаю, что показатель степени равен 110 + смещения (из 127), чтобы быть 0xED

Но мантисса просто убивает меня ... Я не могу понять, почему я продолжаю получать 0 за эту часть.

Ответы [ 3 ]

1 голос
/ 07 октября 2011

Вам нужны первые 24 бита 2 * 10 ^ 33. Первый бит всегда равен 1, а оставшиеся 23 бита образуют последние 23 бита числа с плавающей точкой одинарной точности IEEE-754.

Теперь, 2 * 10 ^ 33 имеет 110 двоичных цифр, поэтому он слишком велик для точного расчета с большинством инструментов (калькуляторы или языки программирования). Мы можем немного упростить задачу, отметив, что 2 * 10 ^ 33 = 2 * (2 * 5) ^ 33 = 2 ^ 34 * 5 ^ 33, поэтому первые 24 бита нашего числа такие же, как у 5 ^ 33, который имеет только 76 бит.

Мы можем дополнительно написать:

5^33 = (2^7 - 3)^11
     = 2^77 - 11*3*2^70 + 55*9*2^63 - 165*27*2^56 + 330*81*2^49 
           - 462*243*2^42 + 462*729*2^35 - 330*2187*2^27 + ...
     = 2^53 * (2^24 - 33*2^17 + 495*2^10 - 4455*2^3 + 26730/2^4 
           - 112266/2^11 + 336798/2^18 - 721710/2^25 + ...)
     = 2^53 * (16777216 - 4325376 + 506880 - 35640 + 1670.625
           - 54.817... + 1.284... - 0.0215...)
     = 2^53 * 12924697.071
     = 2^53 * 110001010011011100011001b

где мы округлили в последнем шаге. Таким образом, сохраненная часть мантиссы - 10001010011011100011001. Вместе с информацией, которая у вас уже есть, результат:

0 11101101 10001010011011100011001

или в шестнадцатеричном формате:

76C53719
0 голосов
/ 23 ноября 2011

Если вы введете 2000000000000000000000000000000000 в мой десятичный / двоичный преобразователь , вы получите

1100010100110111000110010001001000110110010011001110001100000101000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000- это 110001010011011100011001 (последние 23 бита это мантисса).

0 голосов
/ 07 октября 2011

Если вы хотите сделать это автоматически, попробуйте этот сайт . Введите 2e33 в верхнем текстовом поле и нажмите кнопку «Округлено» или «Не округлено», чтобы получить ответ.

...