Me encontré con operaciones a nivel de bit en la programación de C, y me di cuenta de que operador XOR puede ser usado para intercambiar 2 números en sus binario bases. Por ejemplo supongamos $$i=(65)_{10}=(1000001)_{2}, \text{ and } j=(120)_{10}=(1111000)_{2}$$.
Deje $\oplus$ ser el operador XOR, luego de observar que si empecé con uno de ellos, decir $i$ y siguiendo el siguiente procedimiento:
1)reemplazar su valor con el $\oplus$ valor, produciendo $$i=(0111001)_{2},j=(1111000)_{2}$$
2) reemplazar a la otra variable($j$) con otro $\oplus$ valor derivado de la nueva $i$ y de edad $j$, produciendo $$i=(0111001)_{2},j=(1000001)_{2}$$
3)reemplazar el original de la variable $i$ $\oplus$ valor de nuevo, produciendo $$i=(1111000)_{2},j=(1000001)_{2}$$
lo que demuestra que de alguna manera tienen sus valores intercambiados. He encontrado esta forma de programación en línea y definitivamente no puedo entender cómo piensa la gente de la lógica de los aspectos de esta. Yo creo que está vinculada a la tabla de verdad de la siguiente, que muestra a través de la división de los casos que los valores pueden ser cambiados.
Sin embargo, estoy seguro de que el pleno de razonamiento de por qué esto funciona, como si hay alguna teoremas matemáticos que debo saber que me puede ayudar en mi entendimiento.
PS: lo Siento si la pregunta es off-topic aquí, se siente como una programación de la pregunta, pero tengo la sensación de que estoy más preocupado por la "lógica" en lugar de la programación. También me llamó la tabla de mí mismo en MS word, ya que no puede obtener el látex para trabajar de alguna manera.