Operadores JavaScript bit a bit (com exemplos)

Neste tutorial, você aprenderá sobre os operadores bit a bit JavaScript e seus tipos com a ajuda de exemplos.

Operadores JavaScript bit a bit

Os operadores bit a bit tratam seus operandos como um conjunto de dígitos binários de 32 bits (zeros e uns) e executam ações. No entanto, o resultado é mostrado como um valor decimal.

Operadores Nome Exemplo
& E bit a bit x & y
| OR bit a bit x | y
^ XOR bit a bit x y
~ NÃO bit a bit ~x
<< Desvio à esquerda x << y
>> Mudança à direita de propagação de sinal x>> y
>>> Zero-fill turno à direita x>>> y

Nota : Os números inteiros mínimo e máximo que são representáveis ​​por meio de um número assinado de 32 bits são -2147483648 a 2147483647.

JavaScript bit a bit AND

O AND bit a bit &retorna 1 se os bits correspondentes de ambos os operandos forem 1, caso contrário, ele retorna 0 .

Operando 1 Operando 2 E Operação
0 0 0 & 0é 0
0 1 0 & 1é 0
1 0 1 & 0é 0
1 1 1 & 1é 1

Vamos dar uma olhada na operação AND bit a bit de dois inteiros 12 e 25 .

 Em binário, 12 = 01100 25 = 11001 // Bitwise AND Operação de 12 e 25 00001100 & 00011001 --------- 00001000 = 8 (em decimal)

Nota : Converter o binário de 12 para 32 bits nos dá 00000000000000000000000000001100e 2500000000000000000000000000011001. No entanto, removemos os zeros anteriores para simplificar.

Exemplo 1: Operador AND bit a bit

 // bitwise AND operator example let a = 12; let b = 25; result = a & b; console.log(result); // 8 

No programa acima,

  • O valor binário de 12 é00000000000000000000000000001100
  • O valor binário de 25 é 00000000000000000000000000011001.
  • Quando a operação AND bit a bit é realizada, o resultado binário será o 00000000000000000000000000001000que se converte no valor decimal 8.

JavaScript bit a bit OU

OR bit a bit |retorna 1 se qualquer um dos bits correspondentes de um operando for 1, caso contrário, retorna 0 .

Operando 1 Operando 2 OU Operação
0 0 0 | 0é 0
0 1 0 | 1é 1
1 0 1 | 0é 1
1 1 1 | 1é 1

Vamos dar uma olhada na operação OR bit a bit de dois inteiros 12 e 25 .

Em binário, 12 = 01100 25 = 11001 // Bitwise OR Operação de 12 e 25 00001100 | 00011001 -------- 00011101 = 29 (em decimal)

Exemplo 2: Operador OR bit a bit

 // bitwise OR operator example let a = 12; let b = 25; result = a | b; console.log(result); // 29

Quando a operação OR bit a bit é realizada, o resultado binário será o 00000000000000000000000000011101que se converte no valor decimal 29.

JavaScript Bitwise XOR

O XOR bit a bit ^retorna 1 se os bits correspondentes forem diferentes e retorna 0 se os bits correspondentes forem iguais.

Operando 1 Operando 2 Operação XOR
0 0 0 0é 0
0 1 0 1é 1
1 0 1 0é 1
1 1 1 1é 0
 Em binário, 12 = 01100 25 = 11001 // Operação Bitwise XOR de 12 e 25 00001100 00011001 -------- 00010101 = 21 (em decimal)

Exemplo 3: Operador XOR bit a bit

 // bitwise XOR operator example let a = 12; let b = 25; result = a b; console.log(result); // 21

Quando a operação XOR bit a bit é realizada, o resultado binário será o 00000000000000000000000000010101que se converte no valor decimal 21.

JavaScript bit a bit NÃO

NOT bit a bit ~inverte o bit ( 0 torna-se 1 , 1 torna-se 0 ).

 Em binário, 12 = 00000000000000000000000000001100 // Bitwise Sem operação de 12 ~ 00000000000000000000000000001100 --------------------------------- 1111111111111111111111111111110011 = -13 (em decimal)

Durante a conversão 11111111111111111111111111110011para decimal, o valor seria 4294967283. Mas ao usar o operador bit a bit, o valor é calculado no formato de complemento de 2 com sinal, exceto para deslocamento à direita de preenchimento zero.

O complemento de 2 é calculado invertendo os bits (complemento de 1) e, em seguida, adicionando 1 . Por exemplo,

 13 in binary: 00000000000000000000000000001101 1's complement of 13: 11111111111111111111111111110010 2's complement of 13: 11111111111111111111111111110010 +1 --------------------------------- 11111111111111111111111111110011

Notice the 2's complement of 13 (i.e. -13) is 11111111111111111111111111110011. This value is equivalent to the bitwise NOT of 12.

Example 4: Bitwise NOT Operator

 // bitwise NOT operator example let b = 12; result = ~b; console.log(result); // -13

When bitwise NOT operation is performed, the binary result will be 11111111111111111111111111110011 which converts into the decimal value -13.

Note: Bitwise NOT of a number x gives -(x + 1). Notice above ~2 gives -3.

JavaScript Left shift

No operador de deslocamento à esquerda <<, o operando à esquerda especifica o número e o operando à direita especifica o número a ser deslocado para a esquerda. Os bits zero são adicionados à direita e os bits em excesso da esquerda são descartados.

Um pequeno deslocamento para a esquerda em JavaScript

Por exemplo,

 let a = 8; let b = 1; result = a << b; // 1 ( 00000000000000000000000000010000 ) console.log(result);

JavaScript Sign-propagating right shift

No operador de deslocamento à direita >>, o primeiro operando especifica o número e o segundo operando especifica o número a ser deslocado para a direita. Os bits em excesso da direita são descartados. As cópias do bit mais à esquerda são deslocadas da esquerda, daí o nome propagação de sinal.

Um pouco de deslocamento para a direita com sinal propagando preenchimento em JavaScript

Por exemplo,

 let a = 8; let b = 1; // 11111111111111111111111111111101 let c = -3; result = a>> b; result1 = c>> b; // 4 (00000000000000000000000000000100) console.log(result); // -1 (11111111111111111111111111111111) console.log(result1); 

JavaScript Zero-fill deslocamento para a direita

O deslocamento >>>para a direita com preenchimento de zero desloca o operando para a direita preenchendo os bits de zero à esquerda. Os bits em excesso da direita são descartados.

Um pouco de deslocamento para a direita com zero preenchimento em JavaScript

Por exemplo,

 let a = 8; let b = 1; let c = -3; result = a>>> b; result1 = c>>> b; // 4 (00000000000000000000000000000100) console.log(result); // 1073741823 (00111111111111111111111111111111) console.log(result);

Artigos interessantes...