Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции по информатике.doc
Скачиваний:
148
Добавлен:
17.02.2016
Размер:
592.38 Кб
Скачать

4.4. Арифметические операции с числами в формате с плавающей запятой.

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

Алгоритм сложения и вычитания чисел в формате с плавающей запятой:

  1. Провести выравнивание порядков

  2. Сложить или вычесть мантиссы.

  3. Привести полученное число к стандартному формату с плавающей запятой путем нормализации.

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

Процедура нормализации: сдвиг мантиссы влево или вправо так, чтобы ее первая значащая цифра попала в первый разряд после запятой.

  • Алгоритм умножения чисел в формате с плавающей запятой:

1. Сложить порядки

2. Перемножить мантиссы

  • Алгоритм деления чисел в формате с плавающей запятой:

1. Из порядка делимого вычесть порядок делителя

2. Мантиссу делимого делить на мантиссу делителя.

Рассмотрим несколько примеров.

1. Произвести сложение чисел 0,1×23 и 0,1×25 в формате с плавающей запятой.

Решение. Произведем выравнивание порядков и сложение мантисс:

0,1×23 = Х×25 , Х=(0,1×23)/ 25=0,1×2-2=0,001

             0,001×25

+0,100×25

 0,101×25 Ответ: 0,101×25

2. Произвести умножение чисел 0,1×23 и 0,1×25 в формате с плавающей запятой.

Решение: После умножения будет получено число 0,01×28, которое после нормализации примет вид 0,1×27. Ответ: 0,1×27.

3. Произвести сложение, вычитание, умножение и деление чисел 0,1×22 и 0,1×2-2 в формате с плавающей запятой.

Решение: Произведем выравнивание порядков и сложение мантисс:

0,1×2-2 = Х × 22 , Х = ( 0,1×2-2 )/ 22= 0,1×2-4 = 0,00001

        0,10000 ×22

+0,00001 ×22

 0,10001×25

Произведем вычитание мантисс и процедуру нормализации:

        0,10000 ×22

- 0,00001 ×22

 0,01111×22 = 0,1111×21

Используем алгоритм умножения: сложим порядки и перемножим мантиссы.

0,10000 ×22

х 0,00001 ×22

0,000001 ×24 , нормализуем ответ 0,1×2-1

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

0,10000 ×22

: 0,00001 ×22

10 000 ×20, нормализуем ответ 0,1×25

Ответ: 0,10001×25; 0,1111×21; 0,1×2-1 ; 0,1×25

Заключительные замечания

Чем больше разрядов отводится под запись мантиссы, тем выше точность представления числа. Чем больше разрядов занимает порядок, тем шире диапазон от наименьшего отличного от нуля числа до наибольшего числа, представимого в машине при заданном формате.

Стандартные форматы представления вещественных чисел:

1) одинарный  —  32-разрядное нормализованное число со знаком, 8-разрядным смещенным порядком и 24-разрядной мантиссой (старший бит мантиссы, всегда равный 1, не хранится в памяти, и размер поля, выделенного для хранения мантиссы, составляет только 23 разряда).

2) двойной  —  64-разрядное нормализованное число со знаком, 11-разрядным смещенным порядком и 53-разрядной мантиссой (старший бит мантиссы не хранится, размер поля, выделенного для хранения мантиссы, составляет 52 разряда).

3) расширенный  —  80-разрядное число со знаком, 15-разрядным смещенным порядком и 64-разрядной мантиссой. Позволяет хранить ненормализованные числа.

Следует отметить, что вещественный формат с m-разрядной мантиссой позволяет абсолютно точно представлять m-разрядные целые числа, т. е. любое двоичное целое число, содержащее не более m разрядов, может быть без искажений преобразовано в вещественный формат.

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

В качестве примера приведем характеристики форматов вещественных чисел, используемых в персональных компьютерах:

Форматы вещественных чисел

Размер в байтах

Примерный диапазон абсолютных значений

Количество значащих десятичных цифр

Одинарный

4

10–45 … 1038

7 или 8

Вещественный

6

10–39 … 1038

11 или 12

Двойной

8

10–324 … 10308

15 или 16

Расширенный

10

10–4932 … 104932

19 или 20

Из этой таблицы видно, что форма представления чисел с плавающей точкой позволяет записывать числа с высокой точностью и из весьма широкого диапазона. При хранении числа с плавающей точкой отводятся разряды для мантиссы, порядка, знака числа и знака порядка:

  • чем больше разрядов отводится под запись мантиссы, тем выше точность представления числа.

  • чем больше разрядов занимает порядок, тем шире диапазон от наименьшего отличного от нуля числа до наибольшего числа, представимого в машине при заданном формате.