Мой вариант мы придумали с сыном навскидку, за десять минут, не зная существующих приведенных по ссылкам вариантов. И в процессе его придумывания исходили из четко декомпозированной задачи - сначала любым способом получаем полное слово переносов, а потом уже знаем что с ним делать. Фактически, сложность заключалась в получении этого слова переносов. А в алгоритме по ссылке (и у
Null, насколько я понял, такой же или похожий, детально не разбирал) не было такой строгой декомпозиции и полное слово переноса не формировалось. Мне этот алгоритм тоже больше нравится, хотя не сказать что намного - цикл и там и там, количество операций в цикле примерно одинаково, условие выхода эквивалентно. А наш алгоритм получился таким из-за жесткости декомпозиции задачи.
ЗЫ сегодня думали как из положительного числа сделать отрицательное в дополнительном коде - для реализации вычитания по этой процедуре, ничего лучше чем инвертировать все биты и прибавить
(по нашей неоптимальной процедуре сложения) не придумали.