Las máscaras de bits son terriblemente viejas. No he podido encontrar una referencia al primero, pero ciertamente fueron populares por la llegada de los procesadores de 8 bits, y probablemente también se usaron en procesadores de 4 bits.
La idea detrás de las máscaras de bits es aprovechar el paralelismo bit a bit. Una computadora de 8 bits puede hacer la misma operación de 8 bits a la vez si están empaquetados en una sola palabra nativa (lo que significa que cabe en un registro).
El nombre proviene del enmascaramiento, que es un enfoque general para cubrir áreas con las que no desea interactuar. Por ejemplo, considere esta plantilla para enmascarar áreas de una pared (la plantilla se ha movido después de pintar para mostrar el patrón)
Las máscaras también se usan en la fotografía, donde van por el término "esquivar" en lugar de "plantilla". Puede usar una máscara para oscurecer parte de la luz durante la impresión para aclarar un área.
El término también se usa directamente en fotolitografía, que es la técnica utilizada para hacer circuitos integrados. La máscara evita que la luz llegue a la fotorresistencia pintada en el chip, lo que crea patrones que luego conducen a patrones fascinantes en el chip. (La imagen a continuación es una de las máscaras para el procesador Intel 8080A , si tiene curiosidad)
Del mismo modo, en el enmascaramiento de bits, está seleccionando las partes de la palabra en las que desea operar, enmascarando el resto de los bits. En el ejemplo a continuación, uso la operación "y" para enmascarar la entrada de modo que solo se muestren los bits 3, 4 y 8. El resto está "enmascarado" para que sean 0's. La máscara que uso es 00110001
. Lo muestro a continuación #
representando 0 y .
representando 1 porque eso hace que la apariencia de la máscara de bits sea similar a la de las máscaras físicas anteriores, y muestro una fila de "bits seleccionados" que muestra los bits de la salida que no se enmascararon ( "bits seleccionados" en realidad no es una operación lógica que sucede ... el procesador realmente pasa directamente de la entrada Y la máscara a la salida en un solo paso, pero creo que aclara la imagen visual)
Input 10010111
Mask ##..###. (aka 00110001)
-----------------------
(selected) 01 1
Input AND Mask 00010001
Como mencioné, el enmascaramiento de bits es terriblemente antiguo porque aumenta dramáticamente la productividad del procesador. En un procesador de 4 bits, puede hacer que el procesador sea 4 veces más rápido. En un proceso de 8 bits, o puede hacerlo 8 veces más rápido (solo en operaciones bit a bit, por supuesto).
Un uso fascinante para esto son los motores de ajedrez. El tablero de ajedrez tiene 64 casillas. Los motores modernos tienen enteros de 64 bits. Esta es una suerte terriblemente conveniente, por lo que los motores de ajedrez a menudo la aprovechan. Tienen los llamados " paneles de bits " que contienen las ubicaciones de las piezas. Esto le permite hacer todo tipo de optimizaciones, como buscar todos los movimientos de peones en un solo paso.