Компьютерная арифметика
Компью́терная арифме́тика, техническая дисциплина, предметом исследования которой являются представление чисел в ЭВМ, алгоритмы вычисления элементарных функций, арифметических операций и другие, а также реализующая их аппаратура.
Компьютерная арифметика активно развивается, что обусловлено совершенствованием микроэлектроники (например, значительно уменьшилось время переключения транзистора). Одно из основных направлений компьютерной арифметики – аппаратная реализация алгоритмов, которые прежде осуществлялись программным способом. Например, раньше во многих ЭВМ операция деления выполнялась специальной подпрограммой, теперь почти во всех ЭВМ есть устройство деления и извлечения квадратного корня; вычисление элементарных функций также всё чаще реализуется аппаратными средствами. Это позволяет значительно ускорить (иногда в тысячи раз) вычисления.
В современных ЭВМ применяется двоичная система счисления (см. Представление информации в ЭВМ). Для представления чисел в ЭВМ обычно используют прямой, обратный и дополнительный коды. Во всех кодах значение знакового разряда положительного числа равно 0, а отрицательного равно 1. Прямой код числа представляет собой знак числа (знаковый разряд) и модуль (абсолютную величину) числа. Представление положительных чисел во всех кодах совпадает. Обратный код отрицательного числа имеет 1 в качестве знака и поразрядную инверсию (замену всех нулей единицами и всех единиц нулями) модуля в остальных разрядах. Дополнительный код отрицательного числа равен обратному коду этого числа, к младшему разряду которого прибавлена 1. В компьютерной арифметике, как правило, используются два способа представления чисел: с фиксированной и плавающей запятой. Числа с фиксированной запятой – это числа, у которых запятая, отделяющая целую часть от дробной, стоит на постоянном, т. е. фиксированном, месте (обычно справа от младшего разряда числа). В научных и технических вычислениях используются как очень большие, так и очень маленькие числа, т. е. требуется большой диапазон представления чисел, который не могут обеспечить числа с фиксированной запятой. В этом случае применяют числа с плавающей запятой. Число с плавающей запятой представляется в виде:
где – величина числа, – знак числа, – мантисса, – порядок. Если , то число положительное, если , то число отрицательное. Обычно на мантиссу накладывается ограничение ; мантисса, удовлетворяющая этому условию, называется нормализованной. Порядок числа представляется со смещением на половину диапазона (например, у чисел с плавающей запятой формата 64 разряда порядок занимает двоичных разрядов, к порядку всегда прибавляется смещение ); смещённый порядок – всегда положительное число.
Вычисления с плавающей запятой приблизительны, поскольку младшие разряды результата, которым не хватает места в разрядной сетке ЭВМ, отбрасываются и производится округление. При вычислениях ошибка округления накапливается и может стать достаточно большой. Интервальная арифметика (разрабатывающая методы интервальных вычислений) в качестве результата операции даёт не число, а интервал между двумя числами, содержащий точный результат, который можно было бы получить, если бы младшие разряды результата не терялись. Если интервал, в котором заключён результат, очень большой, то выбранный алгоритм имеет недостаточную точность.
Раньше результаты одной и той же программы, производящей вычисления с плавающей запятой, на ЭВМ разных семейств различались, поскольку семантика операций с плавающей запятой не была строго описана в системе команд ЭВМ (ЭВМ отличались по числу разрядов порядка и мантиссы, способу их кодировки, основанию системы счисления, способу округления и др.). В связи с этим в 1985 г. в США был принят стандарт на двоичную арифметику с плавающей запятой ANSI/IEEE Standard No. 754. Его принятие значительно улучшило переносимость программ (например, с ЭВМ одной платформы на ЭВМ другой платформы), повысило точность вычислений. С конца 20 в. большинство выпускаемых ЭВМ соответствует этому стандарту.
При хранении, передаче и обработке информации в ЭВМ возможно появление ошибки. Разработаны коды, обнаруживающие ошибки, и коды, которые исправляют ошибки (например, т. н. коды Хэмминга). На основе элементарной теории чисел в компьютерной арифметике разрабатываются алгоритмы и аппаратура шифровки и дешифровки информации для криптографии.