Компьютерная арифметика

КОМПЬЮТЕРНАЯ АРИФМЕТИКА, техническая дисциплина, предметом исследования которой является представление чисел в ЭВМ, алгоритмы вычисления элементарных функций, арифметических операций и др., а также реализующая их аппаратура.

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

В современных ЭВМ применяется двоичная система счисления (смотри Информации представление в ЭВМ). Для представления чисел в ЭВМ обычно используют прямой, обратный и дополнительный коды. Во всех кодах значение знакового разряда положительного числа равно 0, а отрицательного 1. Прямой код числа представляет собой знак числа (знаковый разряд) и модуль (абсолютную величину) числа. Представление положительных чисел во всех кодах совпадает. Обратный код отрицательного числа имеет 1 в качестве знака и поразрядную инверсию (замену всех нулей единицами и всех единиц нулями) модуля в остальных разрядах. Дополнительный код отрицательного числа равен обратному коду этого числа, к младшему разряду которого прибавлена 1. В компьютерной арифметике, как правило, используются два способа представления чисел: с фиксированной и плавающей запятой. Числа с фиксированной запятой - это числа, у которых запятая, отделяющая целую часть от дробной, стоит на постоянном, т. е. фиксированном, месте (обычно справа от младшего разряда числа). В научных и технических вычислениях используются как очень большие, так и очень маленькие числа, то есть требуется большой диапазон представления чисел, который не могут обеспечить числа с фиксированной запятой. В этом случае применяют числа с плавающей запятой. Число с плавающей запятой представляется в виде:

Реклама

N= (-1)S·М·2Е,

где N - величина числа, S - знак числа, М - мантисса, Е - порядок. Если S = 0, то число положительное, если S=1, то число отрицательное. Обычно на мантиссу накладывается ограничение 1≤ М < 2; мантисса, удовлетворяющая этому условию, называется нормализованной. Порядок числа представляется со смещением на половину диапазона (например, у чисел с плавающей запятой формата 64 разряда порядок занимает 11 двоичных разрядов, к порядку всегда прибавляется смещение 1023 = 210 -1) ; смещённый порядок Е - всегда положительное число.

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

Раньше результаты одной и той же программы, производящей вычисления с плавающей запятой, на ЭВМ разных семейств различались, поскольку семантика операций с плавающей запятой не была строго описана в системе команд ЭВМ (ЭВМ отличались по числу разрядов порядка и мантиссы, способу их кодировки, основанию системы счисления, способу округления и др.). В связи с этим в 1985 году в США был принят стандарт на двоичную арифметику с плавающей запятой ANSI/IEEE Standard No. 754. Его принятие значительно улучшило переносимость программ (например, с ЭВМ одной платформы на ЭВМ другой платформы), повысило точность вычислений. С конца 20 века большинство выпускаемых ЭВМ соответствует этому стандарту.

При хранении, передаче и обработке информации в ЭВМ возможно появление ошибки. Разработаны коды, обнаруживающие ошибки, и коды, которые исправляют ошибки (например, так называемые коды Хэмминга). На основе элементарной теории чисел в компьютерной арифметике разрабатываются алгоритмы и аппаратура шифровки и дешифровки информации для криптографии.

Лит.: Карцев М. А. Арифметика цифровых машин. М., 1969; Koren I. Computer arithmetic algorithms. 2nd ed. Natick, 2002.

А. И. Грушин.