O que esses operadores bitwise JavaScript fazem?

  • x <<= y (x = x << y)
  • x >>= y (x = x >> y)
  • x >>>= y (x = x >>> y)
  • x &= y (x = x & y)
  • x ^= y (x = x ^ y)
  • x |= y (x = x | y)

O que esses diferentes operadores fazem?

 < <, >> 

Bit shift esquerda e direita, respectivamente. Se você imaginar o operando esquerdo como uma seqüência binária de bits, você está deslocando- os para a esquerda ou para a direita pelo número de bits indicado pelo operando à direita.

 &, ^, | 

Estes são bit a bit e , xor e ou respectivamente. Você pode pensar em & e | como as contrapartes de && e || , exceto que eles tratarão seus operandos como vetores de bit e executarão as operações lógicas em cada um dos bits. Não existe um operador ^^ , mas esta operação é “xor” ou ” exclusive ou “. Você pode pensar em “a xor b” como “a ou b, mas não ambos”.

Operadores bit a bit

Aqui está uma tentativa de tornar as coisas simples para o iniciante.

Pré-requisitos

Você precisa estar familiarizado com o sistema numérico binário (números compostos por dois dígitos). Se você não estiver, verifique primeiro este link: https://www.mathsisfun.com/binary-number-system.html . Apenas no caso de o link anterior quebrar, esta resposta pode ajudar um pouco: https://stackoverflow.com/a/32155850/1636522 .

De fato, para descobrir como esses operadores funcionam, você precisa saber qual seqüência de bits está por trás dos números envolvidos na operação. Depois disso, você deve ser capaz de entender os seguintes itens.

Lembrete

Dígitos decimais e suas notações binárias:

 0 0 | 5 101 1 1 | 6 110 2 10 | 7 111 3 11 | 8 1000 4 100 | 9 1001 

O que >>> , e < < fazer?

Esses operadores deslocam uma seqüência de bits para a esquerda ou para a direita.

  decimal | binary decimal | binary ---------|--------- ---------|--------- 9 | 1001 2 | 10 >> 2 | >> 2 < < 2 | << 2 = 2 | = 10 = 8 | = 1000 

O que fazer & | e ^ fazer?

Esses operadores combinam os bits de dois números para criar um novo número.

  decimal | binary decimal | binary decimal | binary ---------|-------- ---------|-------- ---------|-------- 5 | 101 5 | 101 5 | 101 & 6 | & 110 | 6 | | 110 ^ 6 | ^ 110 = 4 | = 100 = 7 | = 111 = 3 | = 011 

Como funciona o trabalho?

Para cada par de bits: Se pelo menos um dos dois bits for 0, o bit resultante será 0. Se nenhum dos dois bits for 0, o bit resultante será 1.

  101 bit 3 | bit 2 | bit 1 & 110 -------|-------|------- = 100 1 | 0 | 1 & | & | & 1 | 1 | 0 = | = | = 1 | 0 | 0 

Como faz | trabalhos?

Para cada par de bits: Se pelo menos um dos dois bits for 1, o bit resultante será 1. Se nenhum dos dois bits for 1, o bit resultante será 0.

  101 bit 3 | bit 2 | bit 1 | 110 -------|-------|------- = 111 1 | 0 | 1 | | | | | 1 | 1 | 0 = | = | = 1 | 1 | 1 

Como funciona o trabalho?

Para cada par de bits: Se os dois bits forem diferentes, o bit resultante será 1. Se os dois bits forem iguais, o bit resultante será 0.

  101 bit 3 | bit 2 | bit 1 ^ 110 -------|-------|------- = 011 1 | 0 | 1 ^ | ^ | ^ 1 | 1 | 0 = | = | = 0 | 1 | 1