Przejdź do głównej treści

Kwalifikacja: INF.03 - Tworzenie i administrowanie stronami i aplikacjami internetowymi oraz bazami danych

Zawód: Technik informatyk, Technik programista

Kategorie: Programowanie webowe Algorytmy i podstawy informatyki JavaScript

W języku skryptowym JavaScript operatory: &, |, ^ należą do grupy operatorów

A. logicznych.
B. przypisania.
C. arytmetycznych.
D. bitowych.
Operatory &, | oraz ^ w JavaScript należą do operatorów bitowych, czyli takich, które wykonują operacje na pojedynczych bitach liczby całkowitej. W praktyce & oznacza bitowe AND, | oznacza bitowe OR, a ^ oznacza bitowe XOR, czyli alternatywę wykluczającą. JavaScript przed wykonaniem takiej operacji zamienia wartości na 32-bitowe liczby całkowite ze znakiem, wykonuje działanie na bitach, a potem zwraca wynik jako liczbę. Przykładowo 5 & 3 daje 1, bo zapis binarny 5 to 0101, a 3 to 0011, więc wspólny bit ustawiony na 1 zostaje tylko na końcu. Takie operatory spotyka się np. przy maskach bitowych, uprawnieniach, flagach konfiguracyjnych, optymalizacji prostych obliczeń albo pracy z danymi niskopoziomowymi. Moim zdaniem warto szczególnie uważać, żeby nie mylić ich z operatorami logicznymi && i ||, bo wyglądają podobnie, ale działają zupełnie inaczej. Dobra praktyka w kodzie JavaScript jest taka, żeby operatory bitowe stosować świadomie i czytelnie opisywać ich sens, np. nazwami stałych, ponieważ dla osoby czytającej kod po czasie sama maska bitowa może być trochę nieoczywista.
W tym pytaniu łatwo pomylić wygląd operatorów z ich rzeczywistym znaczeniem w JavaScript. Znaki &, | oraz ^ nie są operatorami przypisania, bo nie służą do nadawania wartości zmiennej. Do przypisania używa się przede wszystkim =, a także operatorów złożonych takich jak +=, -=, *= czy czasem &=, |= i ^=. I tu właśnie bywa pułapka: samo & nie przypisuje wyniku, dopiero połączenie go ze znakiem równości tworzy operator przypisania bitowego. To drobna różnica w zapisie, ale w programowaniu ma spore znaczenie. Nie są to też typowe operatory logiczne. W JavaScript operatory logiczne to głównie &&, || oraz !, używane w warunkach, np. gdy sprawdzamy, czy użytkownik jest zalogowany i ma odpowiednie uprawnienia. Pojedynczy znak & albo | działa na bitach liczb, a nie na wartościach logicznych w takim sensie jak warunek true albo false. Częsty błąd myślowy polega na tym, że ktoś widzi podobieństwo do && i ||, więc zakłada, że chodzi o tę samą grupę operatorów. No niestety, język jest tutaj dość dokładny. Nie są to również operatory arytmetyczne, mimo że wynik wygląda jak zwykła liczba. Operatory arytmetyczne wykonują działania typu dodawanie, odejmowanie, mnożenie, dzielenie, reszta z dzielenia czy potęgowanie. Operatory bitowe pracują niżej, na reprezentacji binarnej liczby, czyli na zerach i jedynkach. Z mojego doświadczenia dobrze jest zapamiętać prostą zasadę: pojedyncze &, | i ^ w JavaScript kojarzymy z bitami, a podwójne && i || z logiką warunków. To bardzo pomaga przy czytaniu kodu i unikaniu dziwnych błędów w instrukcjach if.

Wymagane logowanie

Ocenianie trudności pytań jest dostępne tylko dla zalogowanych użytkowników. Zaloguj się, aby skorzystać z pełni możliwości platformy.

Twoja ocena pomoże innym uczniom w przygotowaniu do egzaminu, a Tobie pozwoli na dostęp do spersonalizowanych statystyk.

Zgłoś błąd w pytaniu

Rozwiń sekcję i zmień pole, którego dotyczy błąd. Wysłane zostaną tylko zmienione sekcje.

Błędna kwalifikacja
Błąd w treści pytania
Błąd w treści odpowiedzi
Błąd w obrazie
Dane kontaktowe (opcjonalnie)
Podaj email, jeśli chcesz otrzymać informację o rozpatrzeniu zgłoszenia.