Operadores bit a bit
AND, OR, XOR, NOT.
Operadores bit a bit é uma aula grátis de C Academy no CoddyKit. Esta é a aula 1 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de C Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de C Academy inclui 4 aulas no total.
Trabalhando no nível dos bits
Os inteiros são armazenados como sequências de bits. C permite operar diretamente nesses bits com os operadores bit a bit.
Os quatro operadores principais são 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
O operador & define o bit do resultado como 1 somente quando ambos os bits de entrada são 1.
Para 12 (1100) e 10 (1010), o resultado é 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
O operador | define o bit do resultado como 1 quando pelo menos um dos bits de entrada é 1.
12 (1100) OR 10 (1010) é 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
O operador ^ (OR exclusivo) define o bit do resultado como 1 quando os bits de entrada são diferentes.
12 (1100) XOR 10 (1010) é 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
O operador ~ inverte todos os bits. Em valores sem sinal, ~0 resulta em todos os bits 1, ou seja, no valor máximo.
#include <stdio.h>
int main(void) {
unsigned char x = 0;
printf("~0 as 8-bit = %u\n", (unsigned char)~x);
return 0;
}Exibindo bits
Um auxiliar que exibe a forma binária de um byte facilita a compreensão dos resultados das operações bit a bit. Testamos cada bit, do mais significativo ao menos 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;
}Troca com XOR
XOR tem uma propriedade interessante: é possível trocar dois inteiros sem uma variável temporária.
Aplique XOR três vezes para trocar os valores.
#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 com ele mesmo
Qualquer valor combinado com ele mesmo usando XOR resulta em 0, e qualquer valor combinado com 0 usando XOR permanece inalterado.
Essas identidades permitem a troca com XOR e muitos outros truques.
#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 versus lógico
Não confunda & com &&, nem | com ||.
- Os operadores bit a bit atuam em cada bit dos operandos.
- Os operadores lógicos avaliam a veracidade e retornam 0 ou 1.
#include <stdio.h>
int main(void) {
printf("2 & 1 = %d\n", 2 & 1);
printf("2 && 1 = %d\n", 2 && 1);
return 0;
}Combinando operadores
Os operadores bit a bit podem ser combinados para expressar condições complexas. Aqui, mantemos os bits que estão em a, mas não em 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;
}Verificando a paridade com XOR
Aplicar XOR a todos os bits informa a paridade, isto é, se a quantidade de bits definidos é ímpar. Reduza o valor repetidamente.
#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ção rápida
Teste seus conhecimentos sobre operadores bit a bit.
Recapitulação
Você aprendeu os operadores bit a bit:
&AND mantém os bits definidos nos dois operandos.|OR mantém os bits definidos em qualquer um dos operandos.^XOR mantém os bits diferentes.~NOT inverte todos os bits.- Bit a bit é diferente dos operadores lógicos
&&e||.
Perguntas Frequentes
A aula “Operadores bit a bit” é grátis?
Sim — o texto completo de “Operadores bit a bit” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de C Academy, atualize para CoddyKit PRO. O curso de C Academy inclui 4 aulas no total.
O que vou aprender em “Operadores bit a bit”?
AND, OR, XOR, NOT. Você pratica C Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.
Preciso ter experiência prévia para começar C Academy?
Nenhuma experiência prévia é necessária. C Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 1 de 4.
Quanto tempo leva a aula “Operadores bit a bit”?
A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.
Posso escrever e executar código nesta aula de C Academy?
Sim. Cada aula de C Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.
Todas as aulas deste curso
- Operadores bit a bit
- Deslocamentos
- Máscaras de bits e flags
- Truques práticos com bits