Л. — Сейчас я докажу тебе, что справедливо для всех случаев. Предположим, например, что триггер Вг при записи первого числа получил один импульс (что означает, что в первом числе на месте единиц стоит цифра 1). Теперь предположим, что при записи второго числа на вход Е1 поступил еще один импульс. Этот импульс переключит триггер на нуль и тем самым запишет последнюю цифру суммы двух полученных цифр. При опрокидывании на нуль триггер посылает импульс на схему задержки R1. Этот импульс представляет собой не что иное, как единицу, переносимую при сложении в следующий разряд. После того, как сдвигающий регистр зафиксирует второе число, эта переносимая единица поступает на триггер В2 и прибавляется к записанной в нем цифре, т. е. переключает триггер В2 из одного состояния в другое.
Н. — Поразительно, твоя схема способна производить сложения и учитывать переносы единиц в следующие разряды. Это идеальное решение для создания сумматора.
Л. — Это возможное, но не наилучшее решение. Представь себе, что первым мы передали на сдвигающий регистр число 111, а вторым — число 001. Когда мы запишем второе число, триггер В1 опрокинется и вернется на нуль. Через схему R1 он передаст импульс на триггер В2, который после соответствующей задержки опрокинется и вернется на нуль. Триггер В2 через схему R2 пошлет импульс на триггер В3, который спустя еще один период задержки опрокинется и вернется на нуль. Как ты видишь, задержки накапливаются и может оказаться, что для завершения записи суммы потребуется значительное время.
Н. — Но ты сам в этом виноват; зачем ты поставил схемы задержки?
Л. — Твой вопрос, Незнайкин, заставляет меня думать, что ты не понял принцип работы сдвигающего регистра. Схемы задержки необходимы. В самом деле, когда я импульсом сброса на нуль продвигаю число вперед, все триггеры должны сначала переключиться на нуль, а затем те из них, которым — предстоит опрокинуться, должны получить переданный через схемы задержки задержанный ими импульс. Кроме того, при использовании сдвигающего регистра для сложения параллельных чисел следует не допускать возможности одновременного поступления на триггер цифры второго числа и переносимой единицы, полученной в результате сложения цифр на предыдущем триггере.
Н. — Мне остается только поблагодарить тебя, Любознайкин, за напрасную потерю времени. Ты заставил меня отменно помучиться, чтобы понять устройство и принцип работы сдвигающего регистра, а теперь собираешься объявить мне, что воспользоваться им на практике нельзя.
Л. — Далеко не так, Незнайкин. Сдвигающий регистр можно очень хорошо использовать, впрочем, в ближайшее время мы познакомимся с очень интересным устройством, в котором работает этот регистр. Я просто хотел бы обратить твое внимание на следующее обстоятельство: может случиться, что при использовании сдвигающего регистра для сложения эта операция займет очень много времени. Но тогда мы постараемся воспользоваться другим методом, о котором поговорим завтра.