¿Por qué las máscaras de bits se llaman "máscaras" y para qué sirven?


79

¿Por qué las "máscaras de bits" se llaman así?

Sé que se usan principalmente para operaciones bit a bit y el uso de máscaras de bits es más eficiente que el uso de variables separadas.

Sin embargo, mi pregunta es ¿por qué y cuándo se inventaron las máscaras de bits? ¿Se usaron desde la informática temprana? ¿Hay algún otro tipo de "máscaras" además de las máscaras de bits en el dominio de TI?


14
La fotolitografía (que usa luz UV para grabar características en obleas de silicio) usa una "fotomasca" para bloquear selectivamente la fuente de luz UV para que las áreas expuestas de silicio tengan el patrón correcto.
Levi



14
¿Alguna vez hizo un trabajo de pintura y usó cinta de enmascarar?
gnasher729

1
Otro tipo de máscaras: la detección de colisión perfecta de píxeles se trata de detectar superposiciones de máscaras 2D.
aluriak

Respuestas:


101

Una máscara (de la variedad facial) es algo que cubre algunas partes de la cara y deja ver otras partes. La terminología se usa por analogía en la informática: una máscara de bits cubre (filtra) algunos bits en un conjunto de bits y permite que otros pasen.

¿Hay algún otro tipo de "máscaras" además de las máscaras de bits en el dominio de TI?

Justo en la parte superior de mi cabeza, las máscaras se usan con frecuencia en el procesamiento de imágenes. Es un concepto similar: crea una imagen en blanco y negro que muestra la forma de qué enmascarar y qué dejar pasar.


33
Las máscaras de subred también son bastante comunes .
Matthieu M.

38
@MatthieuM. pero ¿las máscaras de subred no son máscaras de bits? Se utilizan para filtrar la dirección de red y la dirección del host.
yoyo_fun

22
@JenniferAnderson ¿No es una imagen en blanco y negro solo una máscara de bits de píxeles también?
Bergi

8
Las máscaras de imágenes físicas se utilizan en la producción de chips de silicio, como parte de una técnica que evolucionó de la fotografía tradicional y la impresión de procesos. en.wikipedia.org/wiki/Photolithography
Jander

20
Enmascarar es también un término artístico para proteger un área del cambio y al mismo tiempo permite el cambio de otra. A menudo se usa en pintura. Para eso es la cinta adhesiva: para que no pintes sobre las cosas que no quieres pintar y al mismo tiempo puedas pintar sobre las cosas que sí quieres pintar.
Nate Diamond

54

Una máscara de bits se usa para enmascarar algunos bits de un campo de bits mientras se exponen otros:

initial value: 011011001
bit mask.....: 111110000
result value.: 011010000

Esto se ha utilizado antes de computar en electrónica con puertas lógicas (AND, OR ...) o transistores o en electromecánica con relés.


66
"Se utiliza una máscara de bits para enmascarar algunos bits de un campo de bits mientras se exponen otros:" Nunca lo había pensado así, pero tiene mucho sentido. Gracias por la explicación :)
yoyo_fun

1
@mouvicel, ¿podría indicarme algunos enlaces sobre cómo se utilizaron las máscaras de bits en la electrónica con puertas lógicas? ¿Cuál fue el propósito, en qué tipo de sistemas se utilizaron estas operaciones y cuándo comenzó esta técnica?
yoyo_fun

44
para aclarar: el valor inicial se AND con la máscara y, por lo tanto, solo los bits de la máscara en "1" mantienen los bits originales del valor inicial (como, bit a bit, "1 y 1 = 1" y "0 y 1 = 0" ), y los otros bits del valor inicial se establecen en 0 como (bit a bit) "0 y 0 = 0" y "1 y 0 = 0") (porque "Y" dice eso "solo cuando el primer bit Y el segundo bit se establece en 1, es el resultado a 1. todos los demás resultados en 0 ". (O significa: ya sea con el primer bit es 1 O el segundo bit es 1, el resultado será 1. etc.). ver en.wikipedia. org / wiki / ...
Olivier Dulac

2
@JenniferAnderson: además de las máscaras de bits lógicos, se utilizan máscaras reales en electrónica: una máscara de soldadura es una plantilla (una pieza de tarjeta) que se utiliza para depositar pasta de soldadura en los PCB. Pones la máscara en la PCB, usas una escobilla de goma para untar la pasta de soldadura sobre la máscara, luego los agujeros de la máscara dejarán pasar la pasta para cubrir con precisión solo las áreas que necesitas pasta de soldadura ( youtube.com/watch?v=EqJN1CTCOQs ) . En la fabricación de chips, las máscaras se utilizan para construir o grabar estructuras en silicio. Este uso de la palabra "máscara" proviene de la industria gráfica.
slebetman

44
@JenniferAnderson: El uso de la palabra "máscara" en inglés para referirse a cubrir algo es más general y probablemente mucho más antiguo. Por ejemplo, en inglés, decimos que el perfume se puede usar para enmascarar el mal olor.
slebetman

39

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)

Plantillas

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.

Máscaras de fotografía

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)

Máscara de fotolitografía

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.


33

En su uso más general en inglés, una máscara es un dispositivo que oculta algo. La serigrafía se menciona en otra respuesta. La cinta de pintura "enmascara" algo para evitar que quede pintura, etc. La máscara de soldadura en una placa de PC "enmascara" el área que se va a soldar del área que no se va a soldar.

En el caso del "enmascaramiento de bits", algunos bits están 'ocultos' o ignorados para que otros que sean de mayor interés puedan manipularse más fácilmente o simplemente verse.

El enmascaramiento de bits no es simplemente una técnica "antigua", es una operación primitiva en la mayoría de las instrucciones de la máquina, si no en todas, hasta donde yo sé por los primeros procesadores. Por lo general, se trata de "usar el patrón de bits en este registro para enmascarar los bits en algún otro registro".


12
No he escuchado el término "cinta de pintura". Supongo que esto es lo que yo llamaría "cinta de enmascarar".
thelem

12
@thelem: El término "cinta de enmascarar", al menos en los Estados Unidos, se refiere a una cinta a base de tela que se rasga fácilmente. Cuando se usa para pintar, produce un borde algo "difuso". Debido a que dicha cinta se usa para muchos otros propósitos, las cintas más nuevas que son mejores para pintar (pero son más caras y pueden ser menos adecuadas para otros fines) se denominan "cinta de pintor".
supercat

2
@Barmar Cualquiera que haya ido a la sección de pintura de la ferretería se habrá topado con ellos.
chrylis -on strike-

55
No soy pintor y sé que la cinta de pintor y la cinta de enmascarar son dos tipos de cinta muy diferentes. Quizás simplemente diciendo que "la cinta de enmascarar es un tipo de cinta que se usa por su opacidad y es fácil de escribir".
valbaca

2
Intenté buscar en el sitio web de la ferretería gigante local (Australia) y el primer éxito para "cinta de pintura" es un producto etiquetado como "cinta de enmascarar", así que supongo que eso es todo. ;) Sospecho que hay buenas diferencias terminológicas entre regiones. Las personas también son muy exigentes con lo que cuenta como cinta adhesiva, dependiendo de dónde vivan.
Trejkaz

10

Una máscara de bits es similar a la serigrafía . Selecciona alguna posición de bit determinada para tomar en el resultado:

source value = 42 -> 00101010b
mask = 51 -> 00110011b
result 42&51 = 00100010b -> 34

Otro significado de máscara es una página en una interfaz gráfica de usuario donde el usuario puede ingresar datos.


3

Las máscaras de bits se inventaron por un par de razones:

  • Los registros de hardware se asignaron a un conjunto contiguo de bits
  • El espacio de memoria era muy limitado en un pasado no muy lejano

Cuando observa cómo ve el patrón de bits que está ORing para activar un bit o ANDing para desactivar los bits, parece una máscara.

La máscara más común (basada en máscaras de bits) es una máscara de imagen (vea el enlace que incluí al principio).


2
Un mapa de bits de valores de indicador sigue siendo una forma apropiada y más eficiente de pasar un conjunto de indicadores que una matriz de boolalguna otra forma de tener cada indicador en un byte separado. Eso hace posible hacer cosas de manera eficiente en if (x & (FLAG_A | FLAG_B))lugar de hacerlo if (xflags[FLAG_A] || xflags[FLAG_B]). Especialmente si la máscara no es una constante; ser capaz de pasar una máscara como un número entero es mucho más barato que pasar una lista de banderas para verificar. Por lo tanto, incluso si la memoria y la memoria caché fueran ilimitadas, en algunos casos sería mucho más eficiente usar conjuntos de bits y máscaras.
Peter Cordes

Nunca dije que aún no era útil. Solo dije que los orígenes tenían sus raíces en el manejo de registros de hardware y memoria limitada. Todavía uso máscaras de bits cuando son apropiadas para el problema.
Berin Loritsch

1
Lo que quise decir fue que los orígenes son probablemente partes iguales de memoria y rendimiento en computadoras viejas y lentas.
Peter Cordes

1
Convenido. Habiendo programado un Commodore 64, también necesitaba saber máscaras de bits para hacer cosas con gráficos, sonido, E / S en serie y paralelas. Los chips del controlador se asignaron a direcciones de memoria con pines asignados a bits dentro de esa dirección. Supongo que se podría discutir si la máscara de bits influyó en la interfaz del hardware o viceversa. De cualquier manera, tenías que conocerlos para hacer algo útil.
Berin Loritsch

@BerinLoritsch Gracias por la respuesta. ¿Podría explicar qué quiere decir con "los registros de hardware se asignaron a un conjunto contiguo de bits"? ¿No se accede a los registros de hardware independientemente uno del otro?
yoyo_fun

3

Otro tipo de máscara física en TI es la fotomáscara litográfica utilizada para grabar solo parte de una oblea de silicio. Eso no se usó para fabricar las primeras computadoras, pero cualquiera que haya trabajado en la industria en los últimos cincuenta años lo habría sabido.

No sé cuándo apareció el término exacto "máscara de bits", pero la operación en sí misma es solo bit a bit y, que es una instrucción básica de cada computadora binaria.


+1 para "instrucción básica en cada computadora binaria". La gente necesita saber qué son las computadoras y por qué son así.
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.