Особенности машинной арифметики

Для представления вещественных чисел в компьютере применяют, в основном, два способа: с фиксированной и с плавающей запятой (точкой).

Пусть в основу запоминающего устройства машины положены однотипные физические устройства (базисные элементы), имеющие r устойчивых состояний (как правило, r = 2, 8, 16 и т.п.), причем каждому числу ставится в соответствие одинаковое количество k этих элементов и, кроме того, с помощью таких или более простых элементов может фиксироваться знак. Упорядоченные элементы образуют разрядную сетку машинного слова: в каждом разряде может быть записано одно из базисных чисел 0, 1, ..., r – 1 (одна из r «цифр» r-ичной системы счисления) и в специальном разряде отображен знак + или –.

При записи числа с фиксированной запятой кроме упомянутых r параметров (основания системы счисления) и k (количества разрядов, отводимых под запись цифр числа) указывается еще количество l разрядов, выделяемых под дробную часть числа. Таким образом, положительное вещественное число а, представляющее собой в r-ичной системе бесконечную, вообще говоря, непериодическую дробь, здесь будет отображено конечной последовательностью

a1a2…ak–lak–l+1…ak–1ak, где ai Î {0, 1, …, r – 1}, т.е. реализуется приближенное равенство

a » fix(a) = a1rk–l–1 + a2rk–l–2 +…+ ak–1r0 + ak–1+1r–1 +…+ ak–1r–(l–1) + akr–l.

Диапазон представляемых таким способом чисел определяется числами с наибольшими цифрами во всех разрядах, т.е. наименьшим –(r – l)(r – l)…(r – l) и наибольшим (r – l)(r – l)…(r – l) числами, а абсолютная точность представления есть оценка величины |a – fix(a)|, зависящая от способа округления: это rl при простом отбрасывании «хвоста» ak+1r–(l+1) + ak+2r–(l+2) + … числа а и половина этой величины при правильном округлении (т.е. при увеличении ak на единицу, если ). Заметим, что абсолютная точность представления вещественных чисел с фиксированной запятой одинакова в любой части диапазона. В то же время относительная точность, т.е. оценка величины (или ), очевидно, может значительно различаться в зависимости от того, берется a близким к нулю или к границе диапазона. Иными словами, вещественные числа с фиксированной запятой имеют равномерную абсолютную плотность распределения на всем отрезке вещественной оси, определяемом границами диапазона, и неравномерную, возрастающую к границам отрезка, относительную плотность распределения.

В основе значительно чаще употребляемого представления с плавающей запятой лежит следующая экспоненциальная форма записи вещественного числа:

а = Μ · rp,

где r основание, p порядок, а М такое, что r–1 £ |М| < 1 (= r0) — мантисса. Если под мантиссу выделяется l r-ичных элементов, а под порядок m, то в системе записи с плавающей запятой вещественное число a представляется конечным числом fl(a) (от англ. floating — «плавающий») вида

a » fl(a) = ±(b1r–1 + b2r–2 + … + blr–l) · rg,

где γ целое число из промежутка [–rm, rm – 1]; b1 Î {1, …, r – 1}; βi Î {0, 1, ..., r – l}, (i = 2, ..., l), т.е. машинное слово условно имеет структуру:

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

Определение 5. Машинный эпсилон.

Важной характеристикой является число ε, называемое машинный эпсилон и обозначаемое обычно идентификатором macheps. Эта характеристика определяется как расстояние между единицей и ближайшим следующим за ней числом системы машинных чисел с плавающей запятой. Так как

1 = (1·r1 + 0·r2 + ... + 0·rl + ...}·r1,

а следующее за 1 машинное число есть

(l·r–1 + 0·r–2 + ... + 0·r–(l–1) +l·r–l)·r1 =fl(1 + e),

то за macheps можно принять величину

e = 1·rl·r1 = rl–1.

Это число непосредственно связано с относительной погрешностью представления чисел в системе с плавающей запятой. Имеем:

. (5)

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

|a – fl(a)| £ |fl(a)|·r1–l

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

Приведем значения введенных выше теоретических параметров для некоторой ЭВМ.

Так, для записи числа в 48-разрядном машинном слове ЭВМ 40 двоичных разрядов выделяются под мантиссу, 6 — под порядок и 2 — под знаки мантиссы (т.е. числа) и порядка. Отсюда, принимая r = 2, l = 40, m = 6, получаем, что точность представления чисел с плавающей запятой на этой ЭВМ не хуже 2–39 (»10–12), граница машинного нуля 2–64 (»10–19), машинной бесконечности 263 (»1019).