Выбрать главу

Вычитание в машине обеспечивается введением дополнительной шестерни, которая осуществляет реверс (обратный поворот) цифровых дисков: при этом, проходя перед окошком, цифры последовательно уменьшаются, и всякий раз, когда 0 проходит и появляется 9, происходит перенос. При вычитании производятся те же самые операции и используется тот же самый принцип зацепления. Таким образом, один и тот же механизм служит для сложения и вычитания; смена операций производится перемещением одного рычага.

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

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

При перемножении двух чисел, каждое из которых с любым числом знаков от одного до тридцати, необходимо для экономии времени установить, какой из сомножителей имеет меньшее число значащих цифр. Для этого были разработаны специальные механизмы, названные цифровыми счетными устройствами. Меньшее из двух чисел становится множителем. Оба числа вводятся в арифметическое устройство и размещаются на соответствующих колонках. При выполнении умножения способом последовательных сложений цифры множителя соответственно уменьшаются до нуля; во время проведения операции для любой одной цифры множителя эксцентрик на его колесе выталкивает рычаг, который разрывает связь и систему зацепления для сложения, происходит просто ход; при этом следующий оборот главной оси связан с ходом вместо сложения; затем связи восстанавливаются, и последовательные сложения продолжаются.

Умножение должно обычно производиться от высшего разряда к низшему. Произведение^ обычно содержит накопленную ошибку вследствие округления цифр в каждом числе, с которым продолжают работать. Если тем не менее при записи числа последовательных сложений, которые в конце умножения должны давать сумму всех цифр множителя, известна максимально возможная ошибка, то при необходимости иметь точный результат должна быть проведена коррекция. Например, машина может быть использована для деления пополам некоторого числа и сложения этой величины с последними цифрами результата, где бы он ни был округлен.

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

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

[1 Математически условный переход представляет собой операцию вида:

A = Am при ω =1

и Ai + 1 при ω = 0,

где Ai — адрес команды с кодом условного перехода, хранящийся в счетчике команд (СК); Аm — адресная часть команды, находящаяся в регистре команд (РК); ω — признак результата предыдущей операции. При ω = 0 происходит увеличение содержимого СК на единицу и переход к следующей команде, при ω = 1 — засылка в СК адреса команды, находящейся в РК, и переход к требуемой части программы.]

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