Algoritmos en C/C++

Manipulación de bits

Las máscaras representan opciones booleanas dentro de un entero unsigned.

¿Qué es Manipulación de bits?

Las máscaras representan opciones booleanas dentro de un entero unsigned.

Activa, borra, invierte y prueba flags.

Puntos importantes

  • Prueba entradas vacías, únicas, duplicadas y ordenadas.
  • Separa corrección y optimización.
  • Prefiere la biblioteca estándar en producción.

Ejemplos de código C y C++

C
Ejecutar →
main.c
#include <stdio.h>

int main(void) {
    unsigned flags = 0;
    flags |= 1u << 1;
    flags |= 1u << 3;
    flags ^= 1u << 1;
    printf("flags=%u bit3=%u\n", flags, (flags >> 3) & 1u);
}
Resultado esperado
flags=8 bit3=1
C++
Ejecutar →
main.cpp
#include <bitset>
#include <iostream>

int main() {
    std::bitset<4> flags;
    flags.set(1);
    flags.set(3);
    flags.flip(1);
    std::cout << "flags=" << flags
              << " bit3=" << flags.test(3) << '\n';
}
Resultado esperado
flags=1000 bit3=1

Comparación entre C y C++

Usa tipos unsigned para shifts predecibles. C manipula máscaras y C++ bitset ofrece operaciones nombradas y salida binaria.

C

Bucles, punteros, tamaños y buffers se escriben explícitamente.

C++

Iteradores y algoritmos separan la operación del almacenamiento.

Ejercicios prácticos

Ejecuta ambas versiones y modifícalas para observar sus garantías.

  • Traza cada comparación.
  • Prueba duplicados y valores extremos.
  • Compara con la biblioteca estándar.