Сверху моей головы я не могу представить ни одного языка, который я использовал, который имел логический эксклюзив или оператор, но у всех есть логические и побитовые операторы and
и or
.
Оглядываясь по сторонам, единственная причина, по которой я мог найти, - это исключительная или не может быть короткой, поэтому логическая версия будет бесполезной, что я действительно не вижу. Причина, по которой мне приходило в голову, что у большинства языков это не так, - это то, что мне это нужно (я использовал Ruby, поэтому я написал метод преобразования целого числа в логическое, а затем использовал побитовое XOR, которое по логическим операциям действует как логический XOR).
Просто использование побитового XOR тоже не работает, потому что это даст другой результат.
0b0001 ^ 0b1000 = 0b1001 (True)
0b0001 XOR 0b1000 = False
// Where ^ is bitwise exclusive or and XOR is logical exclusive or
// Using != (not equal to) also doesn't work
0b0001 != 0b1000 = True
Так почему же большинство языков не включает логический эксклюзив или оператор?
Изменить: я добавил пример с тем, как !=
также не делает то, что я хочу, он почти делает, но попадает в ту же проблему, что с использованием побитового исключения или делает это работает только если вы знаете, что работаете с ноль или один, а не любое другое число.
И отметить, что это предполагает, что язык использует ноль как ложный и ненулевой как истинный.