Экспонента в IEEE 754 - PullRequest
       18

Экспонента в IEEE 754

2 голосов
/ 15 февраля 2010

Почему показатель в поплавке смещен на 127?
Что ж, реальный вопрос: в чем преимущество такой нотации по сравнению с нотацией дополнения 2?

Ответы [ 5 ]

6 голосов
/ 15 февраля 2010

Поскольку показатель степени как сохраненный является беззнаковым, можно использовать целочисленные инструкции для сравнения значений с плавающей запятой. все значение с плавающей запятой может рассматриваться как целочисленное значение со знаком для целей сравнения (не как комплимент двойки).

1 голос
/ 16 февраля 2010

@ Stephen Canon , в ответ на ответ ysap (извините, это должен был быть дополнительный комментарий к моему ответу, но исходный ответ был введен как незарегистрированный пользователь, поэтому я пока не могу это комментировать).

Стивен, очевидно, вы правы, диапазон показателей, о котором я говорил, неверен, но дух ответа по-прежнему применим. Предполагая, что если это было дополнение 2 вместо смещенного значения, и предполагая, что значения 0x00 и 0xFF будут по-прежнему специальными значениями, то смещенные показатели допускают (в 2 раза) большие числа, чем показатели дополнения 2.

1 голос
/ 16 февраля 2010

Обратите внимание, что существует небольшая разница в представимом диапазоне для показателя степени между смещением и дополнением 2. Стандарт IEEE поддерживает показатели в диапазоне (от -127 до +128), в то время как если бы он был дополнением до 2, он был бы (от -128 до +127). Я действительно не знаю причину, по которой стандарт выбирает форму смещения, но, возможно, члены комитета решили, что было бы более полезно разрешить чрезвычайно большие числа, а не очень маленькие числа.

1 голос
/ 15 февраля 2010

Просто для того, чтобы исправить некоторую дезинформацию: это 2^n * 1.mantissa, 1 перед дробью неявно сохраняется.

0 голосов
/ 15 февраля 2010

Показатель степени в 32-разрядном формате с плавающей запятой состоит из 8 битов, но без знакового бита. Таким образом, диапазон эффективно [0; 255]. Чтобы представить числа <2 ^ 0, этот диапазон сдвигается на 127, становясь [-127; 128]. </p>

Таким образом, очень маленькие числа могут быть представлены очень точно. С диапазоном [0; 255] маленькие числа должны быть представлены как 2^0 * 0.mantissa с множеством нулей в мантиссе. Но с диапазоном [-127; 128] маленькие числа более точны, потому что они могут быть представлены как 2^-126 * 0.mantissa (с меньшим количеством ненужных нулей в мантиссе). Надеюсь, вы поняли.

...