Как переписать (P или Q) с помощью AND - PullRequest
0 голосов
/ 30 октября 2019

Я пытаюсь написать операцию XOR на языке ассемблера, но единственными операциями, которые нам разрешено использовать, являются AND и NOT, а не OR и определенно не XOR. Я смотрел всюду онлайн, и я не могу найти ответ. Я знаю: XOR = (P или Q) и ~ (P и Q) Но мне нужно переписать (P или Q) вместо операции AND. Это возможно?

1 Ответ

3 голосов
/ 30 октября 2019

Один из законов Де Моргана (a) гласит, что (используя ~ для отрицания (не), для сочетания (и) и для дизъюнкции(или)):

~A ∨ ~B = ~(A ∧ B)

В вашем случае или P ∨ Q, P равно ~A и Q равно ~B. Итак:

P ∨ Q = ~(~P ∧ ~Q)

Эта правая сторона, следовательно, является эквивалентом P ∨ Q, используя только операции ~ и .


(a) И большой спасибо, что позволили мне использовать эти знания в третий раз с тех пор, как я ушел из университета в 1986 году: -)

...