Operatory bitowe
AND, OR, XOR, NOT
Operatory bitowe to bezpłatna lekcja C Academy na CoddyKit. To lekcja 1 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej C Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs C Academy zawiera 4 lekcji w sumie.
Praca na poziomie bitów
Liczby całkowite są przechowywane jako sekwencje bitów. C pozwala bezpośrednio operować na tych bitach za pomocą operatorów bitowych.
Cztery podstawowe operatory to AND &, OR |, XOR ^ i NOT ~.
#include <stdio.h>
int main(void) {
unsigned a = 12;
unsigned b = 10;
printf("a & b = %u\n", a & b);
return 0;
}Bitowy AND
Operator & ustawia bit wyniku na 1 tylko wtedy, gdy oba bity wejściowe mają wartość 1.
Dla liczb 12 (1100) i 10 (1010) wynikiem jest 8 (1000).
#include <stdio.h>
int main(void) {
unsigned a = 12, b = 10;
printf("%u & %u = %u\n", a, b, a & b);
return 0;
}Bitowy OR
Operator | ustawia bit wyniku na 1, gdy co najmniej jeden bit wejściowy ma wartość 1.
12 (1100) OR 10 (1010) daje 14 (1110).
#include <stdio.h>
int main(void) {
unsigned a = 12, b = 10;
printf("%u | %u = %u\n", a, b, a | b);
return 0;
}Bitowy XOR
Operator ^ (alternatywa wykluczająca) ustawia bit wyniku na 1, gdy bity wejściowe się różnią.
12 (1100) XOR 10 (1010) daje 6 (0110).
#include <stdio.h>
int main(void) {
unsigned a = 12, b = 10;
printf("%u ^ %u = %u\n", a, b, a ^ b);
return 0;
}Bitowy NOT
Operator ~ odwraca każdy bit. Dla wartości bez znaku ~0 składa się z samych jedynek, czyli reprezentuje wartość maksymalną.
#include <stdio.h>
int main(void) {
unsigned char x = 0;
printf("~0 as 8-bit = %u\n", (unsigned char)~x);
return 0;
}Wyświetlanie bitów
Funkcja pomocnicza wyświetlająca binarną postać bajtu ułatwia zrozumienie wyników operacji bitowych. Sprawdzamy każdy bit od najbardziej do najmniej znaczącego.
#include <stdio.h>
void print_bits(unsigned char v) {
for (int i = 7; i >= 0; i--) {
putchar((v >> i) & 1 ? '1' : '0');
}
putchar('\n');
}
int main(void) {
print_bits(12);
print_bits(10);
return 0;
}Zamiana za pomocą XOR
XOR ma ciekawą właściwość: pozwala zamienić dwie liczby całkowite bez użycia zmiennej tymczasowej.
Aby zamienić wartości miejscami, zastosuj XOR trzy razy.
#include <stdio.h>
int main(void) {
int a = 5, b = 9;
a = a ^ b;
b = a ^ b;
a = a ^ b;
printf("a=%d b=%d\n", a, b);
return 0;
}XOR wartości z samą sobą
Dowolna wartość poddana operacji XOR z samą sobą daje 0, a XOR z 0 pozostawia ją bez zmian.
Te właściwości umożliwiają zamianę za pomocą XOR i wiele innych sztuczek.
#include <stdio.h>
int main(void) {
int x = 42;
printf("x ^ x = %d\n", x ^ x);
printf("x ^ 0 = %d\n", x ^ 0);
return 0;
}Operatory bitowe a logiczne
Nie należy mylić & z && ani | z ||.
- Operatory bitowe działają na każdym bicie operandów.
- Operatory logiczne oceniają prawdziwość i zwracają 0 albo 1.
#include <stdio.h>
int main(void) {
printf("2 & 1 = %d\n", 2 & 1);
printf("2 && 1 = %d\n", 2 && 1);
return 0;
}Łączenie operatorów
Operatory bitowe można łączyć, aby wyrażać złożone warunki. W tym przykładzie zachowujemy bity występujące w a, ale nie w b.
#include <stdio.h>
int main(void) {
unsigned a = 0b1111;
unsigned b = 0b0101;
unsigned only_a = a & ~b;
printf("only_a = %u\n", only_a);
return 0;
}Sprawdzanie parzystości za pomocą XOR
Wykonanie XOR na wszystkich bitach pozwala określić parzystość, czyli sprawdzić, czy liczba ustawionych bitów jest nieparzysta. Wielokrotnie redukuj wartość.
#include <stdio.h>
int main(void) {
unsigned v = 0b1011;
int parity = 0;
while (v) {
parity ^= (v & 1);
v >>= 1;
}
printf("parity = %d\n", parity);
return 0;
}Szybkie sprawdzenie
Sprawdź swoją wiedzę na temat operatorów bitowych.
Podsumowanie
Poznał Pan operatory bitowe:
&AND zachowuje bity ustawione w obu operandach.|OR zachowuje bity ustawione w dowolnym z operandów.^XOR zachowuje bity, które się różnią.~NOT odwraca wszystkie bity.- Operatory bitowe różnią się od logicznych
&&i||.
Często zadawane pytania
Czy lekcja „Operatory bitowe” jest bezpłatna?
Tak — pełny tekst „Operatory bitowe” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu C Academy, przejdź na CoddyKit PRO. Kurs C Academy zawiera 4 lekcji w sumie.
Co nauczysz się w „Operatory bitowe”?
AND, OR, XOR, NOT Ćwiczysz C Academy z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.
Czy potrzebuję doświadczenia, aby zacząć C Academy?
Nie wymagamy żadnego doświadczenia. C Academy w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 1 z 4.
Ile czasu zajmuje lekcja „Operatory bitowe”?
Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.
Czy mogę pisać i uruchamiać kod w tej lekcji C Academy?
Tak. Każda lekcja C Academy zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.
Wszystkie lekcje w tym kursie
- Operatory bitowe
- Przesunięcia
- Maski bitowe i flagi
- Praktyczne sztuczki bitowe