# Operadores Bitwise Shift no JavaScript

> Neste drop abordo de forma breve o que são e como se comportam Operadores Bitwise Shift, um tema relativamente denso, mas extremamente interessante de se conhecer dentro do JavaScript.

- Canonical: https://betomuniz.com/blog/operadores-bitwise-shift-no-javascript
- Published: 2020-09-17
- Updated: 2026-04-21T17:44:00.000Z
- Language: pt
- Tags: JavaScript

---

Conceitos teóricos a parte, **operadores bitwise**, como o nome já faz referência, são operações efetuadas bit a bit em dados númericos e sempre baseadas em 32bits.

Esse tipo de operador é útil em algoritmos de _checksum_ que validam a integridade dos dados, máquinas de estados, criptografia, cálculos com cores, etc.

Falarei apenas dos **Operadores Bitwise Shift** `<<`, `>>` e `>>>`, que são utilizados para deslocar bits da esquerda pra direita.

> 
>
> Dica de pesquisa: Existem outros operadores bitwise.
>
>

Considerando que `170` em 32 bits é `00000000000000000000000010101010`, vejamos as seguintes definições:

## Left Shift

`<<` ou _Left Shift_ recebe `x` e `y` para `x << y`. Enquanto `x` é o número inteiro a ser processado, `y` é o número de bits a ser deslocado a partir da esquerda para direita.

```vb.net
170 << 3

(000)00000000000000000000010101010(***)
(***)00000000000000000000010101010(000)

R: 00000000000000000000010101010000
```

## Right Shift

`>>` ou _Right Shift_ recebe `x` e `y` para `x >> y`. Enquanto `x` é o número inteiro a ser processado, `y` é o número de bits a ser deslocado a partir da direita para esquerda.

```vb.net
170 >> 3

(***)00000000000000000000000010101(010)
(000)00000000000000000000000010101(***)

R: 00000000000000000000000000010101
```

## Zero-Fill Right Shift

`>>>`ou _Zero-Fill Right Shift_ é semelhante a `>>`, com a diferença que sempre irá popular `0` na definição esquerda do bit, `>>` pode ser `0` ou `1`.

`>>>` recebe `x` e `y` para `x >>> y`. Enquanto `x` é o número inteiro a ser processado, `y` é o número de bits a ser deslocado a partir da direita para esquerda.

```vb.net
170 >>> 3

(***)00000000000000000000000010101(010)
(000)00000000000000000000000010101(***)

R: 00000000000000000000000000010101
```
