с плавающей точкой (действительные числа)
Схема кодирования для чисел с плавающей запятой сложнее, чем для фиксированной запятой. Основная идея та же, что и в научной нотации, где мантисса умножается на десять, возведенную в некоторую степень. Например, 5.4321 × 106, где 5.4321 - мантисса, а 6 - показатель степени. Научные обозначения являются исключительными при представлении очень больших и очень маленьких чисел. Например: 1,2 × 1050, количество атомов в земле, или 2,6 × 10-23, расстояние, которое черепаха ползет за одну секунду, по сравнению с диаметром нашей галактики. Обратите внимание, что числа, представленные в научных обозначениях, нормализованы, так что от десятичной точки остается только одна ненулевая цифра. Это достигается путем корректировки показателя по мере необходимости.
Представление с плавающей точкой похоже на научную запись, за исключением того, что все выполняется в базе два, а не в базе десять. Хотя используется несколько похожих форматов, наиболее распространенным является стандарт ANSI / IEEE. 754-1985. Этот стандарт определяет формат для 32-разрядных чисел, называемых одинарной точностью, а также для 64-разрядных чисел, называемых двойной точностью. Как показано на рис. 4-2, 32 бита, используемых с одинарной точностью, делятся на три отдельные группы: биты с 0 по 22 образуют мантиссу, биты с 23 по 30 образуют показатель степени, а бит 31 - знаковый бит. Эти биты образуют число с плавающей запятой v следующим соотношением:
Термин: (-1) S просто означает, что знаковый бит S равен 0 для положительного числа и 1 для отрицательного числа. Переменная E - это число от 0 до 255, представленное восемью экспонентными битами. Вычитание 127 из этого числа позволяет члену экспоненты работать от до. Другими словами, показатель степени сохраняется в двоичном смещении со смещением 127.
Мантисса M сформирована из 23 битов в виде двоичной дроби. Например, десятичная дробь: 2.783, интерпретируется: 2 + 7/10 + 8/100 + 3/1000. Двоичная дробь: 1,0101, значит: 1 + 0/2 + 1/4 + 0/8 + 1/16. Числа с плавающей запятой нормализуются так же, как и в научной записи, то есть от десятичной запятой осталась только одна ненулевая цифра (называемая двоичной точкой в
база 2). Поскольку единственное ненулевое число, которое существует в базе два, это 1, ведущая цифра в мантиссе всегда будет 1, и, следовательно, не нуждается в сохранении. Удаление этой избыточности позволяет номеру иметь дополнительный бит точности. 23 сохраненных бита, обозначенные обозначениями: m22, m21, m21,…, m0, образуют мантиссу в соответствии с:
Другими словами, M = 1 + m222-1 + m212-2 + m202-3…. Если биты с 0 по 22 все нули, М принимает значение один. Если все биты с 0 по 22 равны единице, M - это всего лишь волоска под двумя, то есть 2-2-23.
При использовании этой схемы кодирования наибольшее число, которое может быть представлено, равно: ± (2-2-23) × 2128 = ± 6,8 × 1038. Аналогично, наименьшее число, которое может быть представлено, составляет: ± 1,0 × 2-127. = ± 5,9 × 10-39. Стандарт IEEE немного уменьшает этот диапазон, чтобы освободить битовые комбинации, которым присвоены специальные значения. В частности, наибольшее и наименьшее допустимые значения в стандарте составляют ± 3,4 × 1038 и? 1,2? 10-38 соответственно. Освобожденные битовые комбинации допускают три специальных класса чисел: (1) ± 0 определяется как все биты мантиссы и экспоненты, равные нулю. (2) ± ∞ определяется как все биты мантиссы, равные нулю, и все биты экспоненты равны единице. (3) Группа очень маленьких ненормированных чисел между? 1.2? 10-38 и? 1.4? 10-45. Это числа с более низкой точностью, получаемые при снятии требования, чтобы первая цифра в мантиссе была единица. Помимо этих трех специальных классов, существуют битовые комбинации, которым не присваивается значение, обычно называемое NAN (не число).
Стандарт IEEEДля двойной точности просто добавьте больше битов в формат одинарной точности.Из 64 битов, используемых для хранения числа двойной точности, биты с 0 по 51 являются мантиссой, биты с 52 по 62 являются показателем степени, а бит 63 является знаковым битом.Как и прежде, мантисса находится между одним и чуть менее двух, т. Е. М = 1 + m512-1 + m502-2 + m492-3….11 битов экспоненты образуют число в диапазоне от 0 до 2047 со смещением 1023, что допускает показатели в диапазоне от 2-1023 до 21024. Допустимые самые большие и наименьшие числа равны? 1,8?10308 и 2,2?10-308 соответственно.Это невероятно большие и маленькие цифры!Весьма редко можно найти приложение, в котором одинарная точность недостаточна.Вы, вероятно, никогда не найдете случая, когда двойная точность ограничивает то, что вы хотите достичь.
Извините за вопросительные знаки в случайных местах.
И я не могу добавлять картинки, поэтому не противтам написано «см. рис. 1».
Источник: http://www.dspguide.com/ch4/3.htm