Bitmasks são terrivelmente antigos. Eu não consegui encontrar uma referência para o primeiro, mas eles foram certamente populares com o advento dos processadores de 8 bits, e provavelmente também foram usados em processadores de 4 bits.
A ideia por trás do bitmasks é aproveitar o paralelismo bit a bit. Um computador de 8 bits pode fazer a mesma operação bit a bit para 8 bits de uma só vez se eles forem empacotados em uma única palavra nativa (o que significa que cabe em um registrador).
O nome vem do mascaramento, que é uma abordagem geral para encobrir áreas com as quais você não quer interagir. Por exemplo, considere este estêncil para mascarar áreas de uma parede (o estêncil foi movido após a pintura para mostrar o padrão)

Asmáscarastambémsãousadasnafotografia,ondeelasusamotermo"esquiva" em vez de "estêncil". Você pode usar uma máscara para obscurecer parte da luz durante a impressão para clarear uma área.

Otermotambéméusadodiretamentenafotolitografia,queéatécnicausadaparafazercircuitosintegrados.Amáscaraimpedequealuzalcanceafoto-resistênciapintadanochip,oquecriapadrõesquemaistardelevamaospadrõesdefaceamentonochip.(Aimagemabaixoéumadasmáscarasparao processador Intel 8080A , se você ' re curioso)

Damesmaforma,nomascaramentodebits,vocêestáselecionandoaspartesdapalavraemquedesejaoperar,mascarandotodoorestodosbits.Noexemploabaixo,euusoaoperação"e" para mascarar a entrada de forma que apenas o terceiro, quarto e oitavo bit sejam exibidos. O resto é "mascarado", então eles são 0s. A máscara que eu uso é 00110001
. Eu mostro abaixo com #
representando 0 e .
representando 1 porque isso torna a aparência visual do bitmask similar àquela das máscaras físicas acima, e eu mostro uma linha de "bits selecionados" que mostra os bits da saída que não foram mascarados ("bits selecionados" não é realmente uma operação lógica que acontece ... o processador realmente vai direto da entrada E da máscara para a saída em uma etapa, mas eu acho que isso clarifica a imagem visual)
Input 10010111
Mask ##..###. (aka 00110001)
-----------------------
(selected) 01 1
Input AND Mask 00010001
Como eu mencionei, bitmasking é muito antigo porque aumenta drasticamente a produtividade do processador. Em um processador de 4 bits, ele pode tornar o processador 4x mais rápido. Em um processo de 8 bits, ou pode torná-lo 8x mais rápido (em operações bit a bit, é claro).
Um uso fascinante para isso é o mecanismo de xadrez. O tabuleiro de xadrez tem 64 quadrados. Motores modernos têm números inteiros de 64 bits. Este é um pouco de sorte terrivelmente conveniente, então os mecanismos de xadrez geralmente alavancam isso. Eles têm os chamados " bitboards " que contêm os locais das peças. Isso permite que você faça todos os tipos de otimizações, como procurar todos os movimentos de peão em uma única etapa.