2013-02-26 5 views
-1

Есть ли способ реализовать побитовый XOR без использования ^?Как реализовать XOR без использования ^?

1) с другими побитовыми операциями?

2) с арифметическими операциями?

+1

Почему? (a | b) & ~ (a & b) –

+4

Подумайте, что означает 'XOR' - должно быть очевидно, что комбинация операций OR, AND и NOT сделает трюк. –

+7

Что не так с '^'? Есть оператор, который делает именно то, что вы хотите. Используй это! –

ответ

4

Я не знаю, почему вы хотите сделать это, но: (a|b)&~(a&b) или (a&~b)|(b&~a) арифметической версия кажется слишком сложной, чтобы попытаться без уважительной причины.

12
a xor b == (a and (not b)) or ((not a) and b) 
+1

Не хотите ли биттон и т. Д. Для побитовых версий? –

+2

Я думал, что использование слов вместо символов сделает ответ более ясным; это бит-операции. –

+2

Хорошо. Обратите внимание, что стандарт предоставляет слова с правильным значением: 'bitand' для' & ',' bitor' для '' 'и' compl' для '~', тогда как 'и',' или' и 'not' предназначены для логические операции ('&&', '||' и '!'), что делает ваш ответ несколько запутанным. –

Смежные вопросы