A dica de hoje é sobre o operador XOR, que eu achei bem interessante. Estava estudando outra coisa e apareceu essa informação, então resolvi checar e realmente faz muito sentido. Imagine que temos duas variáveis: Eu quero simplesmente colocar A em B e B em A, geralmente faríamos uma variável TMP, colocaríamos A,…
por: Tulio Faria
Categoria: Video-TutorialAlgoritmos
A dica de hoje é sobre o operador XOR, que eu achei bem interessante. Estava estudando outra coisa e apareceu essa informação, então resolvi checar e realmente faz muito sentido.
Imagine que temos duas variáveis:
let a = 3
let b = 4Eu quero simplesmente colocar A em B e B em A, geralmente faríamos uma variável TMP, colocaríamos A, colocaríamos A = B e em seguida B = TMP:
let TMP = a
a = b
b = TMPPrecisamos de mais uma variável para conseguir fazer essa troca. Se a gente quisesse fazer utilizando o XOR, é possível:
a = a ^ b
b = a ^ b
a = a ^ b
console.log(a, b)Com isso conseguimos inverter os valores, essa é uma forma diferente de fazer troca de valores. Algo que acho muito legal na nossa área é quando começamos a pegar operadores que nem são tão famosos, como o XOR mesmo, e começamos a ter alguns usos incomuns.
Imaginamos que em binário seria:
3 | 011
4| 100Então no primeiro XOR nós teriamos de resultado o 1
a | 111Agora vamos pegar nosso x que agora é o valor de A e fazer com o B:
a | 111
4 | 100Nosso resultado sera:
b | 011Agora faremos um terceiro XOR com o A:
b | 011
a | 111E o resultado será:
a | 100Perceba que o A agora é 100, que é 4, e o B ficou com 011, que é 3. O legal é que se formos lembrar daquele algoritmo que fizemos de achar os pares que estão faltando, é o mesmo caso porque a medida que nós aplicamos duas vezes o mesmo número, em cima nós removemos, então podemos adicionar ele com outro e tirar o que não queremos. Resumindo, colocamos em A a soma de A com B, em B nós somamos B novamente.
Obviamente ele só funciona com tipos de variáveis numéricas e do mesmo tipo, no nosso exemplo são dois inteiros.
Confira o vídeo:
E Deixe suas dúvidas e sugestões nos comentários. Curta o DevPleno no Facebook, inscreva-se no canal e não se esqueça de cadastrar seu e-mail para não perder as novidades. Abraço!