Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции поколения ЭВМ.doc
Скачиваний:
16
Добавлен:
01.05.2025
Размер:
1 Мб
Скачать
☆

Представление чисел с плавающей точкой

Практически любой язык программирования даёт возможность использовать в вычислениях дробные числа. Когда дело касается программной реализации численных методов или любых других вычислений на ЭВМ, важным вопросом является внутреннее представление чисел, с которым приходится работать программисту. От этого главным образом зависит точность вычислений,а также их скорость.

В этом отчёте будут рассматриваться те аспекты представления чисел в ЭВМ, которые важны пользователям, желающим активно работать с вещественными величинами. Вначале будут введены общепринятые понятия для дальнейшего изложения материала. Будет достаточно подробно рассмотрен наиболее часто используемый стандарт IEEE 754. В заключение будут приведены способы доступа к основным параметрам представления вещественных чисел в ряде компиляторов (Microsoft Visual Studio (2003,2005), Borland C (3.1), GCC(3.4) ).

Числа с плавающей точкой

Числа с плавающей точкой - общепринятая форма представления действительных чисел в ЭВМ. Основными параметрами такой формы представления является основание степени (base) и точность (precision). При этом всегда требуется, чтобы основание степени было целым чётным числом. Если и , то число 0.1 представляется в виде . Однако, очевидно, что при определённых параметрах некоторые числа не удастся представить точно. Например, при и то же самое число 0.1 представляется приблизительно в виде (поскольку в бинарном представлении число 0.1 имеет бесконечный вид).

В общем случае при заданных параметрах запись вида представляет число

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

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

Здесь возникает проблема - что делать с числами, не представимыми точно. Чаще всего такая ситуация возникает при попытке представить числа, имеющие слишком длинное или вообще бесконечное представление (пример с 0.1). В этом случае нужное нам число лежит где-то между двумя числами с плавающей точкой и будет представляться одним из них. Реже встречается попытка использовать числа, меньшие чем , или большие чем . Подробнее об этих случаях речь пойдёт в разделе "Стандарт IEEE".

Введём ещё одну договорённость. Пока что представление чисел с плавающей точкой неуникально. Например, при и число 0.1 можно представить как и как . Представление числа, в старшей позиции которого стоит цифра, отличная от нуля , мы будем называть нормализованным. Использование нормализованных форм решает проблему неединственности представления чисел с плавающей точкой. (Однако, при такой договорённости возникает интересный вопрос — как представлять 0?)

Представление чисел с плавающей точкой - это представление числа с помощью двух других чисел: мантиссы (дробь от 0 до 0.999 ... ) и порядка, или характеристики (степень числа 10, на которую надо умножить мантиссу, чтобы получить исходное число).

Например, мантисса числа 64.5 - это число 0.645, а порядок - число 2, так как 64.5 = 0.645 Ч 102. Мантисса числа 0.0000012 - это число 0.12, а порядок - число -5, потому что 0.0000012 =0.12 Ч 10-5.

Операции над числами с плавающей точкой

Рассмотрим два числа с плавающей точкой: а Ч 10n и b Ч 10m. Произведение этих чисел равно (а Ч b) Ч 10n+m, а частное - (а/b)Ч 10n-m

Для сложения этих чисел требуется равенство п и m. При условии n = m сумма чисел равна (а + b) Ч 10n.

Задача. Найти сумму чисел А = 5.5 и В = -127.25

Решение. Найдем мантиссы и порядки этих чисел:

а) А = 5.5 = 101.12 = 0.10112 Ч 23 => мантисса равна 0.101101, порядок равен 3

б) В = -127.25 = -1111111.012 = -0.1111111012 Ч 27 => мантисса равна 0.111111101, порядок равен 7. Произведем выравнивание:

А= 0.00001011Ч 27

В = -0.111111101Ч 27

Получили два числа с одинаковым порядком.

Сложим их. А и В имеют разные знаки, поэтому сложение сводится к вычитанию. Так как абсолютное значение В больше абсолютного значения А, то вычитаем А из -В, а затем меняем знак.

-В : 0.111111101 порядок 7

А : -0.000010110 порядок 7