представление двойной и осевой точки - PullRequest
2 голосов
/ 06 июня 2011

Согласно тому, что я знаю для двойного (стандарт IEEE), есть один бит для знака, 54 бита для мантиссы, основание и несколько битов для показателя степени

формула для получения двойного значения: (−1)^s × c × b^q

Возможно, я допустил некоторую ошибку, но идея здесь.

Мне просто интересно, как мы можем узнать, где поставить точку отсчета с помощью этой формулы. Если я возьму номер, я получу, например:

m = 3
q = 4
s = 2
b = 2
(-1)^2 * 4 * 2^3 = 32

но я не знаю, где поставить какую-нибудь основную точку ..

Что здесь не так?

EDIT:

Может быть, q всегда отрицательно?

Ответы [ 2 ]

2 голосов
/ 06 июня 2011

Я думаю, что просмотр Википедии помог бы.

Дело в том, что есть "скрытый" '1'.в формуле IEEE.

Каждый номер IEEE 754 должен быть нормирован, это означает, что закодированное число имеет формат:

(-1)^(sign) * '1.' (mantissa) * 2^(exponent)

Следовательно, вы закодировали 1,32, а не 32.

1 голос
/ 06 июня 2011

32 = 1 * 2 ^ 5, поэтому мантисса = 1, показатель степени = 5, знак = 0.Нам нужно добавить 1023 к показателю степени при кодировании показателя степени, поэтому ниже мы имеем 1023 + 5 = 1028.Также нам нужно удалить цифру 1 при кодировании мантиссы, чтобы 1. (что угодно) становилось (что угодно)

Шестнадцатеричное представление 32 как 64-битного двойного равно 4040000000000000 или двоичное:1005 * Чтобы проверить результат, перейдите на эту страницу , введите 32 в первом поле и нажмите кнопку «Округлено» или «Не округлено» (неважно, какое).

...