Operadores binários em Golang

Exemplos de operadores binários em Go

É importante não confundir operadores binários com operadores lógicos, operadores lógicos tem os mesmos nomes mas usam símbolos diferentes e geralmente agem sobre bytes ou sobre a palavra básica da maquina, enquanto operadores binários agem bit a bit.

Para efeito de exemplo considere seguintes variáveis:

var v bin = 60 // 0011 1100
var b bin = 13 // 0000 1101

AND

c := v & b

Equivalente a 0011-1100 & 0000-1101 e o resultado será 0000-1100.

OR

c = v | b

Equivalente a 0011-1100 | 0000-1101 e o resultado será 0011-1101.

NOT AND

c = v &^ b

Equivalente a 0011-1100 &^ 0000-1101 e o resultado será 0011-0000. Uma curiosidade é que esse é o único operador que você realmente precisa, todos os outros operadores podem ser derivados de NOT END.

LEFT SHIFT

c = v << 2

Equivalente a 0011-1100 << 0000-1101 e o resultado será 1111-0000. Você também pode pensar no LEFT SHIFT como multiplicar por dois.

RIGHT SHIFT

c = v >> 2

Equivalente a 0011-1100 >> 0000-1101 e o resultado será 0000-1111. Você também pode pensar no RIGHT SHIFT como dividir por dois.

XOR

c = v ^ b

Equivalente a 0011-1100 ^ 0000-1101 e o resultado será 0011-0001. Eu sei que é tentador mas não use XOR para criptografia, pelo menos não sozinho.

Arquivos desse post