Опубликован: 05.06.2018 | Уровень: для всех | Доступ: платный

Лекция 10: Арифметические операции над числами с плавающей запятой

< Лекция 9 || Лекция 10: 123

Особенности представления чисел с плавающей запятой согласно стандарту IEEE 754

В настоящее время для представления чисел с плавающей запятой используется версия стандарта IEEE 754-2008.

Этот стандарт определяет

  • формат представления двоичных и десятичных чисел с плавающей запятой;
  • программные преобразования чисел с плавающей запятой при использовании различных языков программирования;
  • аппаратную реализацию арифметических действий над числами с плавающей запятой.

Стандарт описывает

  • как представлять нулевые числа (без наличия такой возможности представить число Z=0 в виде числа с плавающей запятой невозможно, так как нормализованная мантисса числа с плавающей запятой должна быть отлична от нуля);
  • как представлять специальную величину бесконечность (Infiniti);
  • как представлять специальную величину "Не число" (NaN или NaNs); к этому понятию относятся символы и результаты недопустимых операций;
  • режимы округления при выполнении операций

и некоторые другие особенности работы с такими числами.

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

Стандарт IEEE 754 определяет четыре формата представления чисел с плавающей запятой:

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

Рассмотрим форматы, наиболее часто используемые чисел: с одинарной, двойной и двойной расширенной точностью (Рис. 10.2)

Формат числа с плавающей запятой согласно ГОСТ 754

Рис. 10.2. Формат числа с плавающей запятой согласно ГОСТ 754

Размеры полей для чисел разных форматов представлены в Табл. 10.2.

Таблица 10.2.
Точность Одинарная single-precision Двойная double-precision Двойная расширенная double-extended precision
Размер (байты) 4 8 10
Поле порядка (бит) 8 11 15
Поле мантиссы (бит) 23 52 63
Наибольшее значение 3,4×10+38 1,7×10+308 1,1×10+4932
Максимальная относительная погрешность 10-7 10-16 10-19

Отметим несколько моментов в машинном представлении числа с плавающей запятой. Как мы указывали ранее, число с плавающей запятой может иметь как порядок, так и мантиссу в виде числа со знаком. На Рис. 10.2 представлено поле для кодирования только одного знака. И это является знаком мантиссы, то есть знаком самого числа. Знак порядка неявно закодирован в поле самого порядка в виде так называемого смещенного, или машинного порядка:

Псм = Пx + Δ,

где Псм – смещенный порядок, закодированный в соответствующем поле числа в ячейке памяти или регистре компьютера, Пx – истинный порядок числа, значение Δ выбирается таким образом, чтобы любой смещенный порядок стал неотрицательным, то есть Δ = |-Пx|макс.

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

Еще один момент, который хотелось бы здесь отметить, связан с понятием нормализованной мантиссы, которое используется в этом ГОСТе.

Так, при обсуждении выше в этой лекции порядка и особенностей выполнения основных арифметических операций над числами с плавающей запятой и возникающих при этом особых случаях мы опирались на понятие нормализованной мантиссы в соответствии с (12.1). Согласно ГОСТ 754 мантисса двоичного числа считается нормализованной, если она удовлетворяет следующему условию:

2 \gt\left |M_2\right| \geq 1 ( 10.2)

Т. е. модуль нормализованной мантиссы всегда имеет целую часть, равную единице.

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

Операции над такими числами необходимо проводить с учетом данного обстоятельства.

В Табл. 10.3 показана связь между представлением чисел различных форматов и местом их обработки в ЭВМ.

Таблица 10.3.
Тип данных Размер, байт Диапазон Блок обработки
Целые без знака

1

2

4

0...255

0...65535

0...4,3*109
АЛУ ФТ
Целые со знаком

1

2

4

-128...+127

-32768...+32767

2,1*109...+2,1*109
АЛУ ФТ
8 9,1*1018...+9*1018 FPU
С плавающей точкой

4 (1+8+23)

знак-порядок-мантисса

±3,37*1035 FPU
8 (1+11+52) ±1,67*10308
10 (1+15+64) ±1,1*104932
Двоично-десятичные числа

1 распакованный

1 упакованных

10 упакованных

0...9

0...99

0...9...9 (18 цифр)

АЛУ ФТ

АЛУ ФТ

FPU

Числа с двойной расширенной точностью используются для обработки упакованных двоично-десятичных данных в FPU (Floating Point Unit – блоке для обработки данных с плавающей точкой (запятой) микропроцессора). При этом сами данные размещаются в поле мантиссы (разряды с нулевого по 63-й), а знак числа повторяется во всех разрядах с 64-го по 79-й.

Краткие итоги

В лекции рассмотрены арифметические операции обработки чисел с плавающей запятой: алгебраическое сложение, умножение, деление. Особое внимание уделено особым ситуациям, возникающим в процессе выполнения этих операций, методам их обработки. Дано представление чисел с плавающей запятой согласно ГОСТ 754 и вытекающие из этого представления особенности хранения и обработки таких чисел.

Вопросы и задания

  1. Укажите формат числа с плавающей запятой. Какую характеристику числа определяет количество разрядов, отводимых под его порядок, а какую – под его мантиссу?
  2. Для чего требуется нормализация мантиссы числа с плавающей запятой?
  3. Определите минимальное количество разрядов, которое необходимо для представления числа 534,2110 с точностью 1%.
  4. Укажите особые случаи при умножении чисел с плавающей запятой. Каковы пути их решения? Какое устройство занимается этим?
  5. Укажите особые случаи при делении чисел с плавающей запятой. Каковы пути их решения?
  6. Каким образом при алгебраическом сложении производится денормализации мантиссы числа с меньшим порядком? При ответе учитывать, что на уровне схемотехники в распоряжении разработчика имеются регистры сдвига лишь на один разряд.
  7. Определите величину константы, которая используется для чисел одинарной, двойной и расширенной точности, чтобы превратить истинный порядок числа с плавающей запятой в машинный.
  8. Представьте число (-0,01510) в следующей разрядной двоичной сетке (1 - 3 - 5 – знак - порядок машинный - мантисса) согласно ГОСТ 754.
< Лекция 9 || Лекция 10: 123
Алексей Болтенков
Алексей Болтенков
Россия, Москва
Нуритдин Рахимов
Нуритдин Рахимов
Узбекистан, Ташкент, ТашПИ, 1989