Реализация логического отрицания только с помощью побитовых операторов (кроме!)

~ & ^ | + << >> - единственные операции, которые я могу использовать

Прежде чем я продолжу, это вопрос домашнего задания, я застрял на нем очень долго.

Мой первоначальный подход: Я думал, что! X можно сделать с дополнением до двух и сделать что-то с его аддитивным обратным. Я знаю, что здесь, вероятно, присутствует xor, но я действительно не понимаю, как к этому подойти.

Для записи: я также не могу использовать условные выражения, циклы, == и т. Д., Только функции (побитовые), о которых я упоминал выше.

Например:

!0 = 1
!1 = 0
!anything besides 0 = 0
13
задан John Bollinger 22 June 2018 в 14:42
поделиться