0Pricing
C Academy · Lekcja

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

  1. Operatory bitowe
  2. Przesunięcia
  3. Maski bitowe i flagi
  4. Praktyczne sztuczki bitowe
← Powrót do C Academy