0Pricing
C Academy · Lezione

Operatori bit a bit

AND, OR, XOR, NOT

Operatori bit a bit è una lezione C Academy gratuita su CoddyKit. Questa è la lezione 1 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento C Academy, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso C Academy include 4 lezioni in totale.

Operare a livello di bit

Gli interi sono memorizzati come sequenze di bit. C consente di operare direttamente su questi bit con gli operatori bit a bit.

I quattro operatori fondamentali sono AND &, OR |, XOR ^ e NOT ~.

#include <stdio.h>

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

AND bit a bit

L'operatore & imposta a 1 un bit del risultato solo quando entrambi i bit di input valgono 1.

Per 12 (1100) e 10 (1010), il risultato è 8 (1000).

#include <stdio.h>

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

OR bit a bit

L'operatore | imposta a 1 un bit del risultato quando almeno uno dei bit di input vale 1.

12 (1100) OR 10 (1010) è uguale a 14 (1110).

#include <stdio.h>

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

XOR bit a bit

L'operatore ^ (OR esclusivo) imposta a 1 un bit del risultato quando i bit di input sono diversi.

12 (1100) XOR 10 (1010) è uguale a 6 (0110).

#include <stdio.h>

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

NOT bit a bit

L'operatore ~ inverte ogni bit. Sui valori senza segno, ~0 è composto interamente da uno ed è quindi il valore massimo.

#include <stdio.h>

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

Stampare i bit

Una funzione di utilità che stampa la rappresentazione binaria di un byte rende più semplici da comprendere i risultati degli operatori bit a bit. Verifichiamo ogni bit dal più significativo al meno significativo.

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

Scambio con XOR

XOR ha una proprietà interessante: è possibile scambiare due interi senza una variabile temporanea.

Applichi XOR tre volte per scambiare i valori.

#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 con se stesso

Qualsiasi valore sottoposto a XOR con se stesso dà 0, mentre qualsiasi valore sottoposto a XOR con 0 rimane invariato.

Queste identità sono alla base dello scambio con XOR e di molti altri accorgimenti.

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

Bit a bit e logico a confronto

Non confonda & con && o | con ||.

  • Gli operatori bit a bit operano su ogni bit degli operandi.
  • Gli operatori logici valutano la veridicità e restituiscono 0 o 1.
#include <stdio.h>

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

Combinare gli operatori

Gli operatori bit a bit possono essere combinati per esprimere condizioni complesse. Qui conserviamo i bit presenti in a ma non in 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;
}

Verificare la parità con XOR

L'applicazione di XOR a tutti i bit indica la parità, cioè se il numero di bit impostati è dispari. Riduca ripetutamente il valore.

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

Verifica rapida

Verifichi la propria conoscenza degli operatori bit a bit.

Riepilogo

Ha imparato a usare gli operatori bit a bit:

  • & AND conserva i bit impostati in entrambi gli operandi.
  • | OR conserva i bit impostati in almeno uno dei due operandi.
  • ^ XOR conserva i bit diversi.
  • ~ NOT inverte tutti i bit.
  • Gli operatori bit a bit sono diversi dagli operatori logici && e ||.

Domande Frequenti

La lezione «Operatori bit a bit» è gratuita?

Sì — il testo completo di «Operatori bit a bit» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso C Academy, passa a CoddyKit PRO. Il corso C Academy include 4 lezioni in totale.

Cosa imparerò in «Operatori bit a bit»?

AND, OR, XOR, NOT Eserciti C Academy con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.

Ho bisogno di esperienza per iniziare C Academy?

Non è richiesta alcuna esperienza precedente. C Academy su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 1 di 4.

Quanto tempo richiede la lezione «Operatori bit a bit»?

La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.

Posso scrivere ed eseguire codice in questa lezione C Academy?

Sì. Ogni lezione C Academy include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.

Tutte le lezioni di questo corso

  1. Operatori bit a bit
  2. Shift
  3. Maschere di bit e flag
  4. Trucchi pratici con i bit
← Torna a C Academy