Я не знаю, опровергает ли это суть вашего вопроса, но вы можете реализовать XOR с помощью AND, OR и NOT, например:
uint xor(uint a, uint b) {
return (a | b) & ~(a & b);
}
В английском языке это "a или b, но не a и b", что точно соответствует определению XOR.
Конечно, я не буду строго придерживаться вашего условия использования только арифметических операторов, но, по крайней мере, это простое и понятное переопределение.