Operatory bitowe

UWAGA: Tłumaczenie tej strony nie zostało zakończone.
Może być ona niekompletna lub wymagać korekty.
Chcesz pomóc? | Dokończ tłumaczenie | Sprawdź ortografię | Więcej takich stron+.

Operatory bitowe

Operatory bitowe traktują swoje argumenty jako zbiory 32 bitów (zer i jedynek), a nie jak liczby dziesiętne, szesnastkowe czy ósemkowe. Na przykład binarny zapis liczby dziesiętnej dziewięć to 1001. Operatory bitowe dokonują swoich operacji na takich właśnie reprezentacjach dwójkowych, ale zwracają standardowe wartości liczbowe JavaScript.

Poniższa tabela podsumowuje operatory bitowe JavaScriptu:

Operator Użycie Opis
Bitowy AND a & b Zwraca jedynkę na każdej pozycji, na której obiema argumentami są jedynki.
Bitowy OR a | b Zwraca jedynkę na każdej pozycji, na której przynajmniej jeden z argumentów jest jedynką.
Bitowy XOR a ^ b Zwraca jedynkę na każdej pozycji, na której jeden (i tylko jeden) z argumentów jest jedynką.
Bitowe NOT ~ a Odwraca bit podanego argumentu.
Przesunięcie w lewo a << b Przesuwa bity w a o b bitów w lewo wstawiając zera z prawej strony.
Przesunięcie w prawo a >> b Przesuwa bity w a o b bitów w prawo usuwając nadmiarowe bity z prawej strony.
Zero-fill right shift a >>> b Przesuwa bity w a o b bitów w prawo usuwając nadmiarowe bity z prawej strony i dodając zera z lewej.

Tabela 3.5: Operatory bitowe

Operatory bitowe logiczne

Konceptualnie, operatory bitowe logiczne działają następująco:

  • Argumenty są konwertowane do 32-bitowej liczby całkowitej i wyrażone przez ciąg bitów (zer i jedynek).
  • Każdy bit w pierwszym argumencie jest dopasowany do odpowiedniego bitu w drugim argumencie: pierwszy bit do pierwszego bitu, drugi bit to drugiego bitu, i tak dalej.
  • Operator jest zastosowany do każdej pary bitów, i rezultat jest bitowy.

Na przykład, binarną reprezentacją dziewięciu jest 1001, a piętnastu jest 1111 . Więc, kiedy operatory bitowe są zastosowane do tych wartości,zwrócone zostają następujące rezultaty:

  • 15 & 9 wynikiem jest 9 (1111 & 1001 = 1001)
  • 15 | 9 wynikiem jest 15 (1111 | 1001 = 1111)
  • 15 ^ 9 wynikiem jest 6 (1111 ^ 1001 = 0110)

Operatorzy przesunięcia bitowego

Operatory przesunięcia bitowego biorą dwa argumenty: pierwszym jest wielkość, którą przesuniemy i drugą jest specyficzny numer pozycji bitu, o który pierwszy argument jest przesunięty. Kierunek, w jakim są przesunięte bity jest kontrolowany poprzez użyty operator.

Operatory przesunięcia konwertują ich argumenty do trzydziestu-dwóch bitów liczby całkowitych i zwraca rezultat, o tym samym typie jako operator znajdujący się po lewej stronie.

Operatory przesunięcia bitowego są wyliczone w poniższej tabeli.

Operator Opis Przykład
<<
(Przesunięcie w lewo)
To pierwszy operator przesunięcia specyficznej liczby bitów w lewo. Przekroczenie przesunięcia bitowego off to the left are discarded. Zero bits are shifted in from the right. 9<<2 yields 36, ponieważ 1001 przesuneło 2 bity do lewej strony stając się 100100, które jest 36.
>> (Sign-propagating right shift) This operator shifts the first operand the specified number of bits to the right. Excess bits shifted off to the right are discarded. Copies of the leftmost bit are shifted in from the left. 9>>2 yields 2, ponieważ 1001 przesuneło 2 bity do prawej strony stając się 10, które jest 2. Likewise, -9>>2 yields -3, ponieważ znak jest zarezerwowany.
>>>
(Zero-fill right shift)
This operator shifts the first operand the specified number of bits to the right. Excess bits shifted off to the right are discarded. Zero bits are shifted in from the left. 19>>>2 yields 4, ponieważ 10011 p 2 bity w prawo to the right becomes 100, which is 4. For non-negative numbers, zero-fill right shift and sign-propagating right shift yield the same result.

Tabela: Operatory przesunięcia bitowego


Autorzy i etykiety dokumentu

Ostatnia aktualizacja: teoli,