Цитата(Peshii Vsadnik @ Dec 26 2005, 15:21)

А вот есть ли способ написать нечто вроде ~(A)&(B^A)|B.... ну и так далее, чтобы в результате получить A+B и A-B? вот в чем вопрос...
Да, не используя сдвига!
Одной формулой не получиться, и без сдвига не обойтись,
если только не делать поразрядного вычисления (которое
само по себе требует сдвига).
Тут нужно сделать N итераций (где N – количество
разрядов операндов, в худшем случае) следующего вида:
1. Вычислить сумму A и B без учета переносов – Sab = A xor B
2. Вычислить слово переносов для этих операндов – Cab = A & B
3. Сдвинуть слово переносов влево на один разряд
4. Вычислить арифметическую сумму Sab и сдвинутого слова переносов Cab
Для последнего пункта рекурсивно использовать весь
вышеприведенный алгоритм, до тех пор, пока слово переносов
не станет равно нулю. В худшем случае понадобится N итераций.
Цитата(Peshii Vsadnik @ Dec 26 2005, 15:21)

Со сдвигом просто - сдвинули B так, чтобы биты не перекрывались, и взяли A|B
Это как это ? Откуда возьмется сумма ?
P.S. А где ты откопал такое странное ALU ?