Tłumaczymy teorię operatorów bitowych w JavaScript, bo będziemy sobie z nimi jeszcze pracować. Do dzieła.

W JS mamy operatory bitowe, możemy to sprawdzić:

console.log(~10); //-11
console.log(10 & 1); //0
console.log(4 | 2); //6
console.log(10 ^ 5); //15
console.log(2 << 1); //4
console.log(10 >> 1); //5

Ok, ale jak to wszystko działa?

Operator | – operator bitwise or:

1010
0101
----
1111

Wystarczy że 1 jest po którejkolwiek ze stron aby była 1.

Operator & – bitwise AND:

1011
0101
-----
0001

Jak widać and wymaga, aby po obu stronach była 1, inaczej mamy 0.

Operator ^ – bitwise xor:

1011
1010
-----
0001

XOR oznacza 1 po jednej lub drugiej stronie ale nie po obu.

Urnary ~ operator – ones complement operator:

  1001 
~ 0110

Jak widać odwraca nam bity.

Teraz operatory przesunięcia. Left shift:

     0001
<< 1 0010

Podobnie działa right shift:

     1000
>> 1 0100

Albo mamy dość już teraz, albo wydaje się przesadnie proste i mało użyteczne, ale to tylko złudzenie. Programowanie z operatorami bitowymi to zupełnie osobny świat…