wleci
O mnieProjektyBlogKontakt
Kontakt
Wróć do bloga
Operacje bitoweNiskopoziomoweWydajność

Etap 9: Operacje bitowe w C++

Przewodnik po manipulacji pojedynczymi bitami danych. Klucz do optymalizacji i programowania niskopoziomowego.

11 lutego 20263 min czytania
Udostępnij:

Operacje bitowe: Myślenie w systemie binarnym

Operacje bitowe pozwalają na manipulację danymi na najniższym możliwym poziomie – poziomie pojedynczych bitów (0 i 1). Na kolokwium te zadania często sprawdzają Twoją biegłość w logicznym myśleniu i rozumieniu, jak liczby są reprezentowane w pamięci.


1. Podstawowe operatory bitowe

W C++ mamy sześć głównych operatorów bitowych:

  • & (AND): Wynik ma 1 tylko tam, gdzie oba bity są równe 1.
  • | (OR): Wynik ma 1, jeśli przynajmniej jeden bit jest równy 1.
  • ^ (XOR): Wynik ma 1, jeśli bity są różne (jeden to 0, drugi to 1).
  • ~ (NOT): Negacja – zamienia 0 na 1 i 1 na 0.
  • << (Przesunięcie w lewo): Przesuwa bity w lewo, dopisując zera z prawej (efektywnie mnożenie przez 2n2^n2n).
  • >> (Przesunięcie w prawo): Przesuwa bity w prawo (efektywnie dzielenie całkowite przez 2n2^n2n).

2. Praktyczne zastosowania (Zadania kolokwialne)

Sprawdzanie, czy liczba jest parzysta

Zamiast % 2, możemy sprawdzić najmłodszy bit. Jeśli jest równy 0, liczba jest parzysta.

cpp
if ((liczba & 1) == 0) { std::cout << "Parzysta"; }

Ustawianie konkretnego bitu (Maska)

Aby ustawić n-ty bit na 1 (licząc od 0), używamy operatora |.

cpp
int liczba = 0; int n = 3; // chcemy ustawić 4. bit liczba = liczba | (1 << n);

Sprawdzanie wartości n-tego bitu

cpp
bool czyUstawiony = (liczba >> n) & 1;

3. Przesunięcia bitowe a wydajność

Przesunięcia bitowe są znacznie szybsze niż standardowe mnożenie czy dzielenie przez potęgi dwójki.

  • x << 1 to to samo co x * 2.
  • x >> 1 to to samo co x / 2.

Pułapki na kolokwium

  1. Mylenie operatorów logicznych z bitowymi: Nigdy nie używaj && zamiast &. && zwraca tylko true/false, podczas gdy & operuje na każdej parze bitów osobno.
  2. Priorytety operatorów: Operatory bitowe mają niższy priorytet niż operatory porównania. Zawsze używaj nawiasów! Zapis x & 1 == 0 zostanie zinterpretowany jako x & (1 == 0), co jest błędem. Pisz: (x & 1) == 0.
  3. Liczby ujemne: Przesunięcia bitowe na liczbach ujemnych mogą zachowywać się różnie zależnie od kompilatora (tzw. Implementation Defined Behavior). Staraj się używać unsigned int przy operacjach bitowych.

Przykład: Zamiana wartości bez zmiennej pomocniczej (XOR Swap)

To klasyk, o który mogą zapytać:

cpp
a = a ^ b; b = a ^ b; a = a ^ b;

Może Cię zainteresować

C++Tutorial

Magia Bitów: Kompletny Przewodnik po Operacjach Bitowych w C++

Zrozum operacje bitowe od podstaw. Tłumaczymy krok po kroku, jak manipulować zerami i jedynkami w C++, aby pisać wydajniejszy kod.

5 min czytania
Wróć do bloga
wleci.pl

Full-stack Developer

Tworzę nowoczesne aplikacje webowe z pasją do czystego kodu i dobrego designu.

[email protected]
Polska

Nawigacja

  • Start
  • O mnie
  • Projekty
  • Blog
  • Kontakt

Usługi

  • Aplikacje webowe
  • Strony internetowe
  • API & Backend
  • Konsultacje

Technologie

  • React / Next.js
  • TypeScript
  • Node.js
  • PostgreSQL

Social

© 2026 wleci.pl. Wszelkie prawa zastrzeżone.

Polityka prywatności•Regulamin

Zrobione z w Polsce