Скачиваний:
95
Добавлен:
15.04.2023
Размер:
29.36 Mб
Скачать

28. Двоичные числа с плавающей точкой.

Часто приходится обрабатывать очень большие числа (например, расстояние между звёздами) или наоборот очень маленькие числа (например, размеры атомов или электронов). При таких вычислениях пришлось бы использовать числа с очень большой разрядностью. В то же время нам не нужно знать расстояние между звёздами с точностью до миллиметра. Для вычислений с такими величинами числа с фиксированной запятой неэффективны.

В десятичной арифметике для записи таких чисел используется алгебраическая форма. При этом число записывается в виде мантиссы, умноженной на 10 в степени, отображающей порядок числа, Например:

0,2×105; 0,16×10-38

Для записи двоичных чисел тоже используется такая форма записи. Эта форма записи называется запись числа с плавающей точкой. Напомним, что мантисса не может быть больше единицы и после запятой в мантиссе не может записываться ноль.

А теперь рассмотрим промышленные стандарты, используемые для представления чисел в компьютерах. Существует стандарт IEEE 754 для представления чисел с одинарной точностью (float) и с двойной точностью (double). Для записи числа в формате с плавающей запятой одинарной точности требуется тридцатидвухбитовое слово. Для записи чисел с двойной точностью требуется шестидесятичетырёхбитовое слово. Чаще всего числа хранятся в нескольких соседних ячейках памяти процессора. Форматы числа в формате с плавающей запятой одинарной точности и числа в формате с плавающей запятой удвоенной точности приведены на рисунке

Стандарт IEEE 754-1985 определяет:

  • как представлять нормализованные положительные и отрицательные числа с плавающей точкой

  • как представлять денормализованные положительные и отрицательные числа с плавающей точкой

  • как представлять нулевые числа

  • как представлять специальную величину бесконечность (Infiniti)

  • как представлять специальную величину "Не число" (NaN или NaNs)

  • четыре режима округления

  • пять исключений

Ieee 753-1985 определяет четыре формата представления чисел с плавающей запятой:

  • с одинарной точностью (single-precision) 32 бита

  • с двойной точностью (double-precision) 64 бита

  • с одинарной расширенной точностью (single-extended precision) >=43 бит (редко используемый)

  • с двойной расширенной точностью (double-extended precision) >= 79 бит (обычно используют 80 бит)

Основное применение в технике и программирование получили форматы 32 и 64 бита. Например в основных логических языках VB и С используют типы данных single и double (double является увеличенной копией single).

Формальное представление нормализованных чисел в формате ieee 754.

Рис. 1 Представление формата числа в стандарте IEEE 754

где:

  • S - знак числа S=0 - положительное число; S=1 - отрицательное число

  • E – смещенный порядок (экспонента) числа; exp = E - 2^(b-1) + 1 , где  exp - экспонента двоичного нормализованного числа с плавающей точкой , 2^(b-1)-1 - смещение экспоненты. Смещение требуется, чтобы не вводить в число еще один знак. Смещённый порядок всегда положительное число. Для одинарной точности для порядка выделено восемь бит. Для смещённого порядка двойной точности отводится 11 бит. Для одинарной точности смещение принято 127, а для двойной точности – 1023.

Далее пойдут биты экспоненты, для этого выделим 1 байт (8 бит), но экспонента тоже может быть +/- Для определения знака экспоненты, чтобы не вводить ещё один бит знака, добавим смещение к экспоненте +127(0111 1111 - это половина пространства отведенного под экспоненту). То есть, если наша экспоната = +7 (+111 в двоичной), то смещенная экспонента = 7+127=134. А если бы наша экспонента была -7 , то смещенная экспонета=127-7 =120. Смещенную экспоненту мы и будем записывать в отведенные 8 бит. При этом, когда нам будет нужно получить экспоненту, мы просто отнимем 127 от этого байта.

  • M - остаток мантиссы двоичного нормализованного числа с плавающей точкой. В десятичной мантиссе после запятой могут присутствовать цифры 1...9, а в двоичной — только 1 (нормализованная мантисса). Поэтому для хранения единицы после двоичной запятой не выделяется отдельный бит в числе с плавающей запятой. Единица подразумевается, как и двоичная запятая. Кроме того, в формате чисел с плавающей запятой принято, что мантисса всегда больше 1. То есть диапазон значений мантиссы лежит в диапазоне от 1 до 2.

Слайды с лекций:

Особые случаи:

Соседние файлы в предмете Основы разработки систем на кристалле