Тривиально видеть, что это невозможно сделать с {AND, OR, XOR, NOT}
. Для всех этих операторов outbit [N] зависит только от inbit1 [N] и inbit2 [N] . И добавляет зависимость от inbit1 [N] .. inbit1 [0] и inbit2 [N] .. inbit2 [0]. Однако в вашем случае вам нужна зависимость от inbit [N + 1]. Следовательно, если есть какое-либо решение, оно должно включать SUB.
Однако A - B
- это просто A + (-B)
, что A + ((B XOR 11111111) +1)
. Следовательно, если было решение с использованием SUB, его можно было бы переписать как решение с использованием ADD и XOR. Как мы показали, этих операторов недостаточно. Следовательно, набор {ADD, OR, XOR, NOT, ADD, SUB}
также недостаточен.