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…