C Academy · Lektion

Bitvisa operatorer

AND, OR, XOR, NOT.

Lektion 1 av 413 steg

Bitvisa operatorer är en gratis lektion i C Academy på CoddyKit. Detta är lektion 1 av 4. Ni kan läsa hela lektionen gratis nedan och sedan öva praktiskt i webbläsaren med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt. Den ingår i lärvägen för C Academy, och Era framsteg synkroniseras mellan webben och CoddyKit-appen. Kursen i C Academy innehåller totalt 4 lektioner.

Arbeta på bitnivå

Heltal lagras som sekvenser av bitar. C låter Er arbeta direkt med dessa bitar med hjälp av bitvisa operatorer.

De fyra grundläggande operatorerna är AND &, OR |, XOR ^ och NOT ~.

#include <stdio.h>

int main(void) {
    unsigned a = 12;
    unsigned b = 10;
    printf("a & b = %u\n", a & b);
    return 0;
}

Bitvis AND

Operatorn & sätter en resultatbit till 1 endast när båda indata-bitarna är 1.

För 12 (1100) och 10 (1010) blir resultatet 8 (1000).

#include <stdio.h>

int main(void) {
    unsigned a = 12, b = 10;
    printf("%u & %u = %u\n", a, b, a & b);
    return 0;
}

Bitvis OR

Operatorn | sätter en resultatbit till 1 när minst en indata-bit är 1.

12 (1100) OR 10 (1010) blir 14 (1110).

#include <stdio.h>

int main(void) {
    unsigned a = 12, b = 10;
    printf("%u | %u = %u\n", a, b, a | b);
    return 0;
}

Bitvis XOR

Operatorn ^ (exklusivt OR) sätter en resultatbit till 1 när indata-bitarna skiljer sig åt.

12 (1100) XOR 10 (1010) blir 6 (0110).

#include <stdio.h>

int main(void) {
    unsigned a = 12, b = 10;
    printf("%u ^ %u = %u\n", a, b, a ^ b);
    return 0;
}

Bitvis NOT

Operatorn ~ inverterar varje bit. För osignerade värden består ~0 av enbart ettor och är alltså det maximala värdet.

#include <stdio.h>

int main(void) {
    unsigned char x = 0;
    printf("~0 as 8-bit = %u\n", (unsigned char)~x);
    return 0;
}

Skriva ut bitar

En hjälpfunktion som skriver ut den binära formen av en byte gör det enklare att förstå bitvisa resultat. Vi testar varje bit från högst till lägst.

#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;
}

XOR-byte

XOR har en praktisk egenskap: Ni kan byta plats på två heltal utan en temporär variabel.

Använd XOR tre gånger för att byta värdena.

#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 med sig självt

Alla värden som XOR:as med sig själva blir 0, och alla värden som XOR:as med 0 förblir oförändrade.

Dessa identiteter ligger till grund för XOR-byte och många andra trick.

#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;
}

Bitvis kontra logisk

Förväxla inte & med && eller | med ||.

  • Bitvisa operatorer arbetar med varje bit i operanderna.
  • Logiska operatorer utvärderar sanningsvärden och returnerar 0 eller 1.
#include <stdio.h>

int main(void) {
    printf("2 & 1 = %d\n", 2 & 1);
    printf("2 && 1 = %d\n", 2 && 1);
    return 0;
}

Kombinera operatorer

Bitvisa operatorer kan kombineras för att uttrycka komplexa villkor. Här behåller vi bitar som finns i a men inte i 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;
}

Kontrollera paritet med XOR

Om Ni XOR:ar alla bitar med varandra får Ni pariteten, det vill säga om antalet satta bitar är udda. Vik ned värdet upprepade gånger.

#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;
}

Snabbtest

Testa Era kunskaper om bitvisa operatorer.

Sammanfattning

Ni har lärt Er de bitvisa operatorerna:

  • & AND behåller bitar som är satta i båda operanderna.
  • | OR behåller bitar som är satta i någon av operanderna.
  • ^ XOR behåller bitar som skiljer sig åt.
  • ~ NOT inverterar alla bitar.
  • Bitvisa operatorer skiljer sig från de logiska && och ||.
Gratis att börja

Lär dig C med en AI-lärare – gratis

Skriv och kör riktig kod i webbläsaren, få omedelbar hjälp av en AI-lärare dygnet runt och fortsätt där du slutade – på webben eller i appen.

Kurser
39
Lektioner
144

Vanliga frågor

Är lektionen ”Bitvisa operatorer” gratis?

Ja – hela texten till ”Bitvisa operatorer” kan läsas gratis här på webben. Om Ni vill öva interaktivt med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt och låsa upp resten av kursen i C Academy, kan Ni uppgradera till CoddyKit PRO. Kursen i C Academy innehåller totalt 4 lektioner.

Vad lär jag mig i ”Bitvisa operatorer”?

AND, OR, XOR, NOT. Ni övar på C Academy med praktisk kod som körs direkt i webbläsaren, medan en AI-handledare som är tillgänglig dygnet runt svarar på Era frågor under lektionen.

Behöver jag någon erfarenhet för att börja lära mig C Academy?

Du behöver inga förkunskaper. Utbildningen i C Academy på CoddyKit är upplagd för allt från nybörjare till avancerade elever, så att du kan börja här eller från början och gå fram i din egen takt. Detta är lektion 1 av 4.

Hur lång tid tar lektionen ”Bitvisa operatorer”?

De flesta CoddyKit-lektioner tar cirka 5–10 minuter. Varje lektion är kort och interaktiv, så att du gör stadiga framsteg och kan fortsätta precis där du slutade – på webben eller i appen.

Kan jag skriva och köra kod i den här C Academy-lektionen?

Ja. Varje C Academy-lektion innehåller en inbyggd kodredigerare, så att du kan skriva och köra riktig kod direkt i webbläsaren och få omedelbar AI-feedback – utan lokal installation.

Alla lektioner i den här kursen

  1. Bitvisa operatorer
  2. Skiftningar
  3. Bitmasker och flaggor
  4. Praktiska bittrick
← Tillbaka till C Academy