Videos
Lua solves this by using x ~ y for XOR.
When applied to floats which do not have an integer representation, it throws an error.
This is reasonably intuitive, since Lua uses ~x for bitwise negation (which is pretty common since the C days), and bitwise negation is just a special case of XOR (~x == (~0) ~ x). This also avoids having to introduce a new operator symbol.
(converted from a comment to an answer)
Other, more obscure ASCII sequences that come to mind are:
<>, since XOR can be seen as a bitwise antivalence (downside: many programming languages use this for~=/!=)(+), since XOR can be seen as a bitwise addition mod 2, which is usually notated as "oplus"
Demote xor
Unless you're in C or a similarly low-level language, you're not going to be doing a lot of bit-level manipulation. So the bitwise operations really don't need to be using up those juicy one-character infix symbols that we have a very limited supply of. In a high-level language, use ^ for the common case of exponentiation, and supply bitwise-xor (and the other bitwise operations, for that matter) as a named function or an operator with a longer name.
- Haskell supplies
xoras a standard function, not an operator. Haskell also demotes the other bitwise operators to have longer names (.&.and.|.), leaving&available for a higher-order function,|available as syntax, and^for exponentiation. - Julia goes even further, relegating bitwise-xor to the Unicode symbol
⊻(with the functionxoras an alias), and using^for exponentiation.



