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++
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);
}
flags=8 bit3=1
C++
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';
}
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.