Если заданы два логических аргумента, оператор ^ выполняет исключающее или, например,
true ^ true == false
true ^ false == true
false ^ true == true
false ^ false == false
Когда заданы два числовых аргумента, он что-то делает, но у меня нет идея какая. Сначала я подумал, что это модульное деление, потому что
(5 ^ 5) == 0
Однако
(10 ^ 4) == 14
Так что это не модульное деление, это какой-то битовый сдвиг?