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
- Operatori bit a bit
- Shift
- Maschere di bit e flag
- Trucchi pratici con i bit