Se eu xor 2 números, só recebo resultados idênticos se os números forem iguais?

StackOverflow https://stackoverflow.com/questions/2481587

  •  21-09-2019
  •  | 
  •  

Pergunta

Por exemplo, suponha que eu tenha x XOR y = y XOR x = z. É possível ter algo como a XOR b = z?

Foi útil?

Solução

Sim.

z = y Porque x ^ y ^ x = y

Portanto, é totalmente possível para uma combinação a ^ b = y = z.

De fato, para cada a existe um b de tal modo que a ^ b = z. Para calcular isso, b = z ^ a.

Esteja ciente que XOR é comutativo: Isso significa que x ^ y = y ^ x.

Outras dicas

Resposta curta: sim

Resposta longa: XOR é uma operação binária, funciona nos bits individuais e é comutativo.

Tem a tabela de verdade:

A B  Q
0 0  0
0 1  1
1 0  1
1 1  0

Como o número é composto desses bits, o resultado será o mesmo, desde que para cada posição de bit, os dois bits tenham o mesmo resultado. Por exemplo, pegue os 2 números de oito bits 113 e 42

113 = 01110001
42  = 00101010
XOR = 01011011 = 91

Mas se eu trocar a quarta parte da esquerda, eu recebo

97  = 01100001
58  = 00111010
XOR = 01011011 = 91

Então, sim de novo ...

Sim. Como uma prova degenerada, Xoring um número por si mesmo sempre resulta em 0.

XOR, retornará verdadeiro se ambos os parâmetros forem diferentes, assumindo que os parâmetros sejam valores booleanos de qualquer maneira. Isso é diferente de OR, que retornará verdadeiro se o parâmetro for verdadeiro e nem, que retornará verdadeiro apenas se os dois forem falsos.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top