0Pricing
C Academy · Aula

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

  1. Operadores bit a bit
  2. Deslocamentos
  3. Máscaras de bits e flags
  4. Truques práticos com bits
← Voltar para C Academy