O que é função inversa para XOR?


95

Existe uma função XOR em Java - a^b

Por exemplo: 5^3 = 6

Você pode me dizer a função inversa? Se eu tenho 6e 3posso obter uma gama de números que incluem o número 5?

Respostas:


204

O inverso é XOR!

Se você tem:

c = a^b;

Você pode obter aou bdevolver se tiver o outro valor disponível:

a = c^b; // or b^c (order is not important)
b = c^a; // or a^c

Por exemplo a = 5, se , b = 3(e assim c = 6como você mencionou) você obtém:

b=0011 (3)            a=0101 (5)
c=0110 (6) XOR   or   c=0110 (6) XOR
----------            ----------
a=0101 (5)            b=0011 (3)

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.