Пред.
След.
Макеты страниц
Распознанный текст, спецсимволы и формулы могут содержать ошибки, поэтому с корректным вариантом рекомендуем ознакомиться на отсканированных изображениях учебника выше Также, советуем воспользоваться поиском по сайту, мы уверены, что вы сможете найти больше информации по нужной Вам тематике ДЛЯ СТУДЕНТОВ И ШКОЛЬНИКОВ ЕСТЬ
ZADANIA.TO
Глава 5. НЕОСНОВНЫЕ АРИФМЕТИЧЕСКИЕ ОПЕРАЦИИ5.1. ОПЕРАЦИЯ ИЗВЛЕЧЕНИЯ КВАДРАТНОГО КОРНЯОсновными арифметическими операциями ЭВМ являются алгебраическое сложение, умножение и деление. Время выполнения этих операций в основном определяет быстродействие машин. Однако в ходе решения задачи очень часто необходимо выполнять другие, так называемые неосновные операции, такие, как извлечение квадратного корня, вычисление тригонометрических и других элементарных функции. Неосновные арифметические операции реализуются обычно с помощью стандартных программ, которые входят в состав математического обеспечения (МО) ЭВМ и вызываются простым обращением к соответствующей библиотеке подпрограмм. Однако для реализации этих подпрограмм требуется значительно больше времени, чем для выполнения основных арифметических операций. Вместе с тем, в настоящее время существенно повысилась степень интеграции и снизилась стоимость электронных компонентов ЭВМ. В связи с этим актуальным стал вопрос о передаче части функций МО машин аппаратным средствам. Прежде всего это касается выполнения сложных арифметических операций, таких, как перевод из одной системы счисления в другую, вычисление численного значения многочлена, вычисление элементарных функций, извлечение корня квадратного, выполнение операций комплексной арифметики. При этом интерес представляет исследование таких методов вычисления указанных операций, которые допускают аппаратную реализацию за время, соизмеримое со временем выполнения основных операций. Естественно, что алгоритмы выполнения неосновных арифметических операций, ориентированные на аппаратурную реализацию, как правило, существенно отличаются от алгоритмов программной реализации, так как первые строятся обычно на основе многократного выполнения операций сложения — вычитания и сдвигов. Рассмотрение алгоритмов неосновных арифметических операций начнем о операции извлечения корня квадратного. Эта операция включается как самостоятельная в систему команд ЭВМ в том случае, когда она составляет не менее Имеются два пути решения рассматриваемой задачи. Первый путь связан с разработкой микропрограммы извлечения квадратного корня с использованием набора основных арифметических операций. При этом микропрограмма реализует один из известных итерационных методов извлечения квадратного корня с помощью базовой аппаратуры. Например, в универсальных ЭВМ для приближенного вычисления квадратного корня применяется обычно известная формула Ньютона:
где Другой путь состоит в созданий алгоритма извлечения квадратного корня, похожего по структуре на алгоритмы основных арифметических операций, например деления. Наиболее простой алгоритм сводится к подбору цифр в результате разряд за разрядом, начиная со старшего, т. е. с При этом вычисление с цифрами искомого результата В. Если Так как вычисление этого разряда снова начнется с подстановки пробной 1, то в случае Аналогичным образом можно вычислять Однако определение остатка 0. При этом если Остаток
Следующая цифра
Затем в следующем такте необходимо вычислить новый остаток
Новая Такой способ получения остатка проще, чем вычисление разности Как и при делении можно отказаться от восстановления остатка. В этом случае, если остаток
Таким образом, сразу получается правильный остаток Пример. Вычислить
Результат вычислений всегда получается с недостачей, поэтому желательно его округление. Для этого необходимо определить Таким образом, процесс вычисления квадратного корня состоит из ряда однотипных циклов, выполняемых последовательно, и шага округления. В каждом цикле находится очередная цифра корня, аначение которой определяет знак результата алгебраического сложения остатка с «переменным делителем», которому приписывается внак, противоположный знаку предыдущего остатка (в первом цикле остаток — это подкоренное число). Если новый остаток положительный, то в регистр результата операции заносится 1 и формируется новое значение переменного делителя путем приписывания к результату операции справа пары цифр результата операции заносится 0, а новое значение делителя формируется путем приписывания к результату справа пары цифр 11. После чего текущий остаток сдвигается влево на один разряд и выполняется следующий шаг алгоритма. Для извлечения корня квадратного из числа с плавающей запятой необходимо порядок числа разделить на два, а из мантиссы извлечь корень по правилам для чисел с фиксированной запятой. Действительно, число с плавающей запятой имеет вид
Для деления порядка на два его необходимо сдвинуть на один разряд вправо, если он четный. Если же он нечетный, то необходимо прибавить к порядку единицу, затем сдвинуть порядок и мантиссу на один разряд вправо. То есть, если
Так как мантиссы всегда нормализованы и в первом цикле из мантиссы производится вычитание числа 0,01, то первый остаток будет всегда положительным, т. е. первая цифра результата всегда будет единица Следовательно, при выполнении операции извлечения корня квадратного в машине с плавающей запятой никогда не может произойти нарушение нормализации результата. Перед началом операции знак операнда и его величина анализируется на равенство нулю. При нулевой мантиссе операция не производится, а результату присваивается сразу значение нуль. Ели знак операнда отрицательный, то ситуация рассматривается как аварийная, так как операция извлечения корня квадратного не применима к отрицательным числам,
|
1 |
Оглавление
|