Bitmasken sind schrecklich alt. Ich konnte keinen Verweis auf den ersten finden, aber sie waren durch das Aufkommen von 8-Bit-Prozessoren sehr beliebt und wurden wahrscheinlich auch in 4-Bit-Prozessoren verwendet.
Die Idee hinter Bitmasken besteht darin, die bitweise Parallelität auszunutzen. Ein 8-Bit-Computer kann dieselbe bitweise Operation mit 8 Bits gleichzeitig ausführen, wenn sie in ein einziges natives Wort gepackt sind (was bedeutet, dass sie in ein Register passen).
Der Name stammt von Masking, einer allgemeinen Methode zum Verdecken von Bereichen, mit denen Sie nicht interagieren möchten. Betrachten Sie diese Schablone beispielsweise zum Abkleben von Wandbereichen (die Schablone wurde nach dem Malen verschoben, um das Muster anzuzeigen).
Masken werden auch in der Fotografie verwendet, wo sie eher als "Ausweichen" als als "Schablone" bezeichnet werden. Sie können eine Maske verwenden, um einen Teil des Lichts während des Druckvorgangs zu verdecken und einen Bereich aufzuhellen.
Der Begriff wird auch direkt in der Fotolithografie verwendet, bei der es sich um die Technik zur Herstellung integrierter Schaltkreise handelt. Die Maske verhindert, dass Licht auf den auf dem Chip aufgebrachten Fotolack gelangt, wodurch Muster entstehen, die später zu den Facinierungsmustern auf dem Chip führen. (Das folgende Bild ist eine der Masken für den Intel 8080A-Prozessor , wenn Sie neugierig sind)
Ebenso wählen Sie bei der Bitmaskierung die Teile des Wortes aus, die Sie bearbeiten möchten, und maskieren alle übrigen Bits. Im folgenden Beispiel verwende ich die Operation "und", um die Eingabe so zu maskieren, dass nur das 3., 4. und 8. Bit durchscheinen. Der Rest ist "maskiert", so dass sie Nullen sind. Die Maske, die ich benutze, ist 00110001
. Ich zeige es unten mit #
0 und .
1, weil das Aussehen der Bitmaske dem der oben gezeigten physischen Masken ähnelt, und ich zeige eine Zeile mit "ausgewählten Bits", in der die nicht ausgeblendeten Bits der Ausgabe angezeigt werden ( "Ausgewählte Bits" ist eigentlich keine logische Operation, die stattfindet. Der Prozessor geht wirklich in einem Schritt von der Eingabe- UND Maske zur Ausgabe, aber ich denke, es klärt das visuelle Bild.
Input 10010111
Mask ##..###. (aka 00110001)
-----------------------
(selected) 01 1
Input AND Mask 00010001
Wie bereits erwähnt, ist Bitmasking sehr alt, da es die Produktivität des Prozessors erheblich steigert. Auf einem 4-Bit-Prozessor kann er den Prozessor 4x schneller machen. Bei einem 8-Bit-Prozess oder 8-mal schneller (natürlich nur bei bitweisen Operationen).
Eine faszinierende Verwendung dafür sind Schachengines. Das Schachbrett hat 64 Felder. Moderne Engines haben 64-Bit-Ganzzahlen. Dies ist ein furchtbar günstiges Glücksspiel, weshalb Schach-Engines es oft nutzen. Sie haben sogenannte " Bitboards ", die die Positionen von Stücken enthalten. Auf diese Weise können Sie alle möglichen Optimierungen vornehmen, z. B. alle Bauernbewegungen in einem einzigen Schritt suchen.