2016-02-02 5 views
-3

Я знаю, что оператор xor возвращает true, если оба его ввода отличаются друг от друга, но с этими знаниями я не могу понять различные проблемы с кодированием в Интернете. , подобные этим:Что такое оператор XOR?

https://www.hackerearth.com/february-easy-16/algorithm/utkarsh-and-sub-array-xor-february-easy/

https://www.hackerrank.com/contests/hourrank-5/challenges/xor-se

Просьба помочь мне понять это. btw Я использую C++ для кодирования. объяснить, как использовать оператор XOR в них, будет достаточно, не нужно объяснять полный вопрос.

+0

Google - ваш друг! –

+0

Я старался не повезло. каждый результат объясняет, что «оператор XOR возвращает true, если оба его значения отличаются друг от друга» –

+2

Возможный дубликат [Логический оператор xor в C++?] (http://stackoverflow.com/questions/1596668/logical-xor-operator-in-c) –

ответ

0

Нет логического оператора xor в C/C++ и многих других языках, только побитовом. Он работает отдельно для каждого соответствующего бита операндов в двоичной форме.

+1

Существует логический оператор xor. Это '! =' – rdb

1

Сложение по модулю 2 эквивалентно XOR.

0 XOR 0 = 0 
0 XOR 1 = 1 
1 XOR 0 = 1 
1 XOR 1 = 0 

равна

(0 + 0) mod 2 = 0 
(0 + 1) mod 2 = 1 
(1 + 0) mod 2 = 1 
(1 + 1) mod 2 = 0 

Теперь вы можете использовать моды для решения XOR вещей.