Una forma intuitiva de entender por qué XOR es asociativo es la siguiente:
Primero hay que reconocer que XOR es conmutativo, es decir, $a \oplus b = b \oplus a$ . Esto se puede hacer utilizando una tabla de verdad o como en la respuesta de Robert Mastragostino.
Entonces, piense en el operador XOR como un operador de "volteo condicional", es decir, piense en $a \oplus b$ como diciendo si $a$ es 1, toma volteado $b$ como salida, mientras que si $a$ es 0, toma $b$ como salida. Debido a la propiedad conmutativa, $a \oplus b$ es completamente equivalente a $b \oplus a$ que dice que $b$ voltea condicionalmente $a$ .
Consideremos ahora $a \oplus (b \oplus c)$ . Esto quiere decir que $b$ voltea condicionalmente $c$ cuyo resultado se invierte condicionalmente por $a$ . Debido a la naturaleza de la operación de volteo, en última instancia $c$ se invierte condicionalmente tanto por $b$ y $a$ y no importa en qué orden se realicen estas dos operaciones. Debido a esto, se ve que $a \oplus (b \oplus c)$ es equivalente a $b \oplus (a \oplus c)$ .
Por último, utilizando la conmutatividad, se puede escribir $a \oplus (b \oplus c) = (b \oplus c) \oplus a$ que acaba de demostrarse que es equivalente a $b \oplus (a \oplus c)$ que a su vez equivale a $b \oplus (c \oplus a)$ por conmutatividad.
Por lo tanto, $(b \oplus c) \oplus a = b \oplus (c \oplus a)$ lo que demuestra la asociatividad.
3 votos
¿Qué tiene esto que ver con la demostración automática de teoremas?
0 votos
Respuesta intuitiva: Para un solo bit, XOR es lo mismo que la suma módulo 2, que como es bien sabido es conmutativa y asociativa. Para números de varios bits, cada posición de bit se trata por separado, por lo que el resultado es el mismo.