Об “арифметических возможностях” компьютера и
“компьютерных возможностях” арифметики
При
изучении математики и информатики необходимо акцентировать внимание обучаемых
на основные различия действий с числами в обычной, неограниченной
(“человеческой”) и ограниченной (“машинной”) разрядной сетке, арифметике,
которые часто остаются “за кадром”. Игнорирование этого может приводить к
нежелательным последствиям – вплоть до абсолютизации возможностей компьютера и
игнорированию адекватных описаний структур данных и операций с ними (например,
проверки чётности числа x условием вида int(x/2)=x/2 и т.д.).
Множество
чисел ограниченной разрядности является моделью расширенной числовой прямой,
т.е. числовой прямой с тремя абстракциями (потенциальной осуществимости): нуль,
положительная бесконечность, отрицательная бесконечность.
Целые
числа (в математике) и их аналоги в n - разрядных арифметиках тождественны (по
отражаемым им количествам) в рамках их представления в этой разрядности. При
этом можно отметить основные отличия представления чисел в поле памяти человека
и в поле памяти n - разрядной арифметики (компьютера):
бесконечное
и счётное (нумеруемое) множество целых чисел Z представляется отрезком [—N;+N],
где N - максимальное число, представимое в этой арифметике (многоточие - общее
число единиц равное n): N=(111 . . . 1)2;
бесконечное
и несчётное множество действительных чисел (—¥ ;+¥ ), располагающееся
на числовой оси равномерно и плотно, представляется в n-разрядной арифметике
множеством с неравномерной плотностью (сгущение у нуля и сжатость со стороны
меньших чисел);
нуль
во множестве действительных чисел R в любой своей окрестности имеет множество
чисел, а нуль в n-разрядной арифметике представлен изолированно: в окрестности
с радиусом равным наименьшему представимо в этой арифметике числу нет других
чисел.
С
точки зрения обычной арифметики, например, в интервале (—1;1) имеется
бесконечное множество “плотно” расположенных точек, причем в любой окрестности
каждой такой точки имеется хотя бы одна точка из этого множества. Такую
арифметику называют часто регулярной арифметикой.
Машинная
же арифметика нерегулярна - точки интервала сгущаются около нуля. Кроме того, в
этом интервале точка х “изолирована” - если взять её любую окрестность (х—а;
х+а), где а - число, которое не превосходит машинного нуля (наименьшего
представимого в машине числа), то в этом интервале нет других точек (отличных
от х). Говоря языком теории вероятностей, плотности распределения чисел в
регулярной и нерегулярной арифметике - различны, как, впрочем, плотности
распределения целых и вещественных чисел в одной и той же арифметике. Множество
вещественных чисел в машинной арифметике представляется как подмножество
множества рациональных чисел, определяемое разрядностью арифметики.
Есть
и другие особенности этих множеств (связанные, например, с выполнением
операций), но указанные выше особенности - основные.
Различия
в представлении чисел в обычной и в машинной (n-разрядной) арифметике
ограничивают как “арифметические возможности” компьютера, так и “компьютерные
возможности” арифметики, математики, использование математических методов,
алгоритмов в компьютерах.
Нужно
всегда иметь в виду, что точность в теоретической математике - понятие
абстрактное и в практической математике может возникать иллюзия точности там,
где её на самом деле нет, - если не произведена достаточно корректная
интерпретация научно-практической точности т.е. нет корректной договорённости о
пределах возможных значений неизбежных погрешностей в рамках рассматриваемых
вычислительных ресурсов, например, трудоёмкости и времени, а также не оговорена
стратегия и тактика управления этой погрешностью.
Так
как диапазон n-разрядных чисел системы счисления с основанием p находится в
пределах |(x)p|£ pn—1, то для представления дробных
чисел этот диапазон ещё уменьшается, так как часть разрядов необходимо отвести
под изображение мантиссы. Таким образом, имеются так называемые “зоны
нечувствительности” форм представления чисел в n-разрядных арифметиках.
В
1937 году немецким учёным Конрадом Цузе (разработавшим, кстати говоря, не
только ряд положений арифметических основ цифровых машин, но и прототипы ЦВМ –
машины “Ц-1”, “Ц-2”) для увеличения диапазона чисел, представимых в арифметике
двоичных чисел, а также для повышения точности этого представления чисел было
предложено представление чисел в плавающей, нормализованной форме.
Число
x представляется в нормализованном виде: x=m´ pk, где m -
мантисса числа, k - целый порядок числа, p—1£ |m|l).
Тогда можно проверить, что результаты выполнения операций будут равны:
x+y=(m+n´ pl—k)´
pk ,
x—y=(m—n´ pl—k)´
pk ,
x´ y=(m´ n)´ pk+l
,
x/y=(m/n)´ pk—l ,
Если
из n разрядов, отводимых под изображение чисел, m двоичных разрядов отвести под
мантиссу, k - под порядок, один разряд - под знак числа и один разряд - под
знак порядка (например, 0 - плюс, 1 - минус), то диапазон представимых в форме
с плавающей запятой чисел резко увеличивается (m+k+2=n):
—(0.111
. . . 1)2´ (10)2+(111 . . . 1)2£
x£ +(0.111 . . . 1)2´ (10)2+(111 .
. . 1)2
(многоточие
соответствует k единицам).
Числа,
меньшие нижней границы положительных чисел и большие верхней границы
отрицательных чисел, считаются равными нулю, не различаются между собой. Числа,
большие верхней границы положительных чисел полагаются равными положительной
бесконечности, а меньшие нижней границы отрицательных – отрицательной
бесконечности. Сравнение двух разных по величине чисел в арифметике с
ограниченной разрядностью может приводить, поэтому, к неверному результату, как
и сравнение двух равных в таких системах чисел с точки зрения математической.
Такое
представление очень удобно для хранения в ЭВМ, так как на самом деле необходимо
хранить не само число, а его знак, мантиссу, порядок и знак порядка и все
операции с числами сводятся к операциям с этими, более “компактными”,
объектами. Операции с этими объектами достаточно просты: сравнение знаков,
увеличение, уменьшение порядка, сложение мантисс, нормализация, т.е. в конечном
итоге сводятся к достаточно просто реализуемым операциям сдвига, выравнивания,
сравнения разрядов. Это упрощает аппаратную их реализацию и является основой
для различных архитектур – микропрограммных, RISC и др.
Пример.
В 16-разрядной арифметике двоичных чисел можно представить диапазон целых чисел
х: 1—215