11

Si tuviera la suma de productos como z*a + z*b + z*c + ... + z*y, sería posible mover el factor z, que es lo mismo, antes de los corchetes: z(a + b + c + ... y).Mudanza antes de corchetes con XOR

Me gustaría saber cómo es posible (si es que) hacer el mismo truco si se usa bitwise XOR en lugar de la multiplicación. z^a + z^b + ... z^y -> z^(a + b + ... + y)

¿Tal vez a, b, c ... se debe preprocesar, como lógicamente negado o alguna otra cosa, antes de agregar? z podría cambiar, por lo que el preprocesamiento, si es necesario, no debe depender del valor particular de z.

+3

AFAIK XOR no es distributivo sobre el módulo de adición 2^32, por lo que no puede hacer eso. – harold

+0

El preprocesamiento a través de y por XORing ellos con z no va a ser más lento que simplemente negando a través de y. Es una operación trivial para una CPU. –

+1

Suena como un buen ejercicio de prueba de matemática: "Demostrar que no hay función' f_z (x) 'tal que' Σ (z^x_i) = z^Σ f_z (x_i) 'para todo x_i." – MSalters

Respuesta

6

De Wikipedia:

Distributivity: sin función binaria, ni siquiera consigo mismo

Así que no, por desgracia, no se puede hacer nada por el estilo con XOR.

Cuestiones relacionadas