|
Operatory bitowe - Kurs języka JavaScript
Operatory bitowe są blisko spokrewnione z operatorami logicznymi - istnieje mianowicie iloczyn bitowy (operator Każda liczba może zostać zapisana także w systemie dwójkowym (binarnym), gdzie każda cyfra będzie reprezentować jeden bit. Np. liczbie 10 w systemie dziesiętnym odpowiada liczna 1010 w systemie dwójkowym (1 * 23 + 0 * 22 + 1 * 21 + 0 * 20 = 1 * 8 + 1 * 2 = 10). Operator negacji bitowej var n = 10; // 00000000000000000000000000001010 n = ~n; // 11111111111111111111111111110101 Powyższy wynik dotyczy oczywiście przypadku gdy liczby są 32-bitowe (tak jest zazwyczaj). Jeżeli spróbujesz go sobie wyświetlić jako liczbę, to zobaczysz że jest ona równa -11. Wynika to ze sposobu w jaki zapisywane są w pamięci komputera liczby - stosowany jest tzw. kod uzupełnień do 2, w skrócie U2. Więcej na ten temat możesz przeczytać np. w Wikipedii. Operator iloczynu bitowego var n1 = 12; // 12 = 1100 var n2 = 10; // 10 = 1010 var n3 = n1 & n2; // 8 = 1000 W przypadku operatora sumy bitowej var n1 = 12; // 12 = 1100 var n2 = 10; // 10 = 1010 var n3 = n1 | n2; // 14 = 1110 Oprócz wymienionych operatorów jest także operator różnicy symetrycznej XOR, który zapisuje się jako var n1 = 12; // 12 = 1100 var n2 = 10; // 10 = 1010 var n3 = n1 ^ n2; // 6 = 0110 Dostępne są także operatory przesunięć bitowych, które przesuwają wszystkie bity w liczbie o określoną liczbę pozycji. Pierwszym z nich jest operator przesunięcia bitowego w lewo var n = 12; // 12 = 001100 n = n << 2; // 48 = 110000 Drugim operatorem jest operator przesunięcia bitowego w prawo var n = 48; // 48 = 110000 n = n >> 2; // 12 = 001100 Ostatni operator posiada także specjalną wersję, która traktuje liczby jako liczby bez znaku (jest on zapisywany jako var n1 = -1, n2 = -13; // -1 = 11111111111111111111111111110011 n1 = n1 >> 2; // -4 = 11111111111111111111111111111100 n2 = n2 >>> 2; // 1073741820 = 00111111111111111111111111111100
Dodaj linka na swojej stronie! Po prostu skopiuj poniższy kod i wklej go na swojej stronie WWW. Gotowy link będzie wyglądał w taki sposób: |
| ||||||||||||||||||||||||||||||||||