0Pricing
C Academy · Lección

Operadores bit a bit

AND, OR, XOR, NOT

Operadores bit a bit es una lección gratuita de C Academy en CoddyKit. Esta es la lección 1 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de C Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de C Academy incluye 4 lecciones en total.

Trabajar a nivel de bits

Los enteros se almacenan como secuencias de bits. C le permite operar directamente sobre esos bits mediante los operadores bit a bit.

Los cuatro operadores principales son AND &, OR |, XOR ^ y 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

El operador & establece un bit del resultado en 1 únicamente cuando ambos bits de entrada son 1.

Para 12 (1100) y 10 (1010), el resultado es 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

El operador | establece un bit del resultado en 1 cuando al menos uno de los bits de entrada es 1.

12 (1100) OR 10 (1010) es 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

El operador ^ (OR exclusivo) establece un bit del resultado en 1 cuando los bits de entrada son diferentes.

12 (1100) XOR 10 (1010) es 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

El operador ~ invierte todos los bits. En valores sin signo, ~0 contiene únicamente unos: es el 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;
}

Imprimir bits

Un auxiliar que imprime la representación binaria de un byte facilita la comprensión de los resultados de las operaciones bit a bit. Comprobamos cada bit de mayor a menor.

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

Intercambio con XOR

XOR tiene una propiedad interesante: puede intercambiar dos enteros sin usar una variable temporal.

Aplique XOR tres veces para intercambiar los 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 consigo mismo

Cualquier valor combinado mediante XOR consigo mismo produce 0, y cualquier valor combinado mediante XOR con 0 permanece sin cambios.

Estas identidades permiten el intercambio con XOR y muchos otros trucos.

#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 frente a lógico

No confunda & con && ni | con ||.

  • Los operadores bit a bit trabajan con cada bit de los operandos.
  • Los operadores lógicos evalúan la veracidad y devuelven 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;
}

Combinar operadores

Los operadores bit a bit se pueden combinar para expresar condiciones complejas. Aquí conservamos los bits que están en a pero no en 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;
}

Comprobar la paridad con XOR

Aplicar XOR a todos los bits indica la paridad, es decir, si el número de bits establecidos es impar. Reduzca el 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;
}

Comprobación rápida

Ponga a prueba sus conocimientos de los operadores bit a bit.

Resumen

Ha aprendido los operadores bit a bit:

  • & AND conserva los bits establecidos en ambos operandos.
  • | OR conserva los bits establecidos en cualquiera de los operandos.
  • ^ XOR conserva los bits diferentes.
  • ~ NOT invierte todos los bits.
  • Las operaciones bit a bit se diferencian de las operaciones lógicas && y ||.

Preguntas frecuentes

¿La lección «Operadores bit a bit» es gratis?

Sí — el texto completo de «Operadores bit a bit» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de C Academy, actualiza a CoddyKit PRO. El curso de C Academy incluye 4 lecciones en total.

¿Qué aprenderé en «Operadores bit a bit»?

AND, OR, XOR, NOT Practicas C Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.

¿Necesito experiencia previa para empezar C Academy?

No se requiere experiencia previa. C Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 1 de 4.

¿Cuánto tiempo toma la lección «Operadores bit a bit»?

La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.

¿Puedo escribir y ejecutar código en esta lección de C Academy?

Sí. Cada lección de C Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.

Todas las lecciones de este curso

  1. Operadores bit a bit
  2. Desplazamientos
  3. Máscaras de bits y flags
  4. Trucos prácticos con bits
← Volver a C Academy