Una forma intuitiva de entender por qué XOR es asociativo es la siguiente:
Primero hay que reconocer que XOR es conmutativo, es decir, a⊕b=b⊕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⊕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⊕b es completamente equivalente a b⊕a que dice que b voltea condicionalmente a .
Consideremos ahora a⊕(b⊕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⊕(b⊕c) es equivalente a b⊕(a⊕c) .
Por último, utilizando la conmutatividad, se puede escribir a⊕(b⊕c)=(b⊕c)⊕a que acaba de demostrarse que es equivalente a b⊕(a⊕c) que a su vez equivale a b⊕(c⊕a) por conmutatividad.
Por lo tanto, (b⊕c)⊕a=b⊕(c⊕a) lo que demuestra la asociatividad.
3 votos
¿Qué tiene esto que ver con la demostración automática de teoremas?
2 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.