bitlvl
ES

Calculadora de máscaras de bits

Introduce posiciones de bits para construir una máscara, o pega una máscara para ver sus bits. Haz clic en los bits del registro para cambiarlos. Pon nombre a los bits y la herramienta escribe las constantes por ti.

Anchura

Banderas con nombre

Da nombre a los bits activos y obtén constantes en tu lenguaje. Deja un nombre vacío para omitir ese bit.

  

Los resultados y mensajes de esta herramienta se muestran en inglés.

Qué es una máscara de bits

Una máscara de bits es un número que se usa por su patrón de bits y no por su valor. Cada posición de bit representa una opción de encendido/apagado, de modo que un solo entero puede contener 8, 32 o 64 banderas a la vez. Los permisos (rwx), los modos de apertura de archivos, los bits de características de la CPU, las máscaras de red y los conjuntos de opciones de casi cualquier API en C son máscaras de bits.

El bit n vale 2ⁿ, así que una máscara con los bits 0, 2 y 7 activos es 1 + 4 + 128 = 133 = 0x85 = 1000 0101. La constante en el código se construye desplazando un 1 a la posición: 1 << 7.

Usar una máscara

ObjetivoCómo
Comprobar si una bandera está activa(value & FLAG) != 0
Comprobar si varias banderas están todas activas(value & MASK) == MASK
Activar una banderavalue |= FLAG
Borrar una banderavalue &= ~FLAG
Alternar una banderavalue ^= FLAG
Extraer un campo de los bits 4–7(value >> 4) & 0xF
Construir una máscara para los bits lo..hi((1 << (hi - lo + 1)) - 1) << lo

Leer una máscara dada

Convierte el valor a binario y numera los bits desde la derecha empezando en 0. Cada 1 es una bandera activa. La herramienta de arriba lo hace para cualquier valor que pegues y muestra las posiciones como una lista compacta, por ejemplo 0-2, 5, 7.

Ejemplos

Permisos Unix 0755
bits 0, 2, 3, 5, 6, 7, 8 → 1 1110 1101
Máscara de subred /20
los 20 bits superiores de 32 activos → 0xFFFFF000
Nibble inferior
bits 0-3 → 0x0F

Preguntas

¿Por qué las posiciones de bits empiezan en 0?

Porque el bit n vale 2ⁿ y 2⁰ = 1 es el bit más a la derecha. Contar desde 0 hace que la aritmética cuadre: desplazar n posiciones pone un 1 en el bit n.

¿Cuál es la diferencia entre una máscara de bits y un campo de bits?

Una máscara de bits es el número con el que haces AND u OR. Un campo de bits es un grupo de bits adyacentes dentro de un valor mayor que juntos guardan un número pequeño (por ejemplo, los bits 4–7 con un valor de 0 a 15). Para leer o escribir un campo de bits se usa una máscara y un desplazamiento.

¿Cuántas banderas caben en un entero?

Una por bit: 8 en un byte, 32 en un int de 32 bits, 64 en uno de 64. Si necesitas más, usa un array de enteros o un tipo bitset propio.

¿Por qué 1 << n en vez del número directamente?

Documenta qué bit se quiere decir y no se puede teclear mal como otra potencia de dos. Los compiladores lo pliegan a una constante, así que no cuesta nada en tiempo de ejecución.

¿La herramienta maneja máscaras de 64 bits correctamente?

Sí. Calcula con enteros de precisión arbitraria, así que los 64 bits son exactos, incluido el bit 63.