Ich bin ziemlich neu in der C-Programmierung und habe auf Bitmaskierung gestoßen. Kann mir jemand das allgemeine Konzept und die Funktion der Bitmaskierung erklären? Beispiele werden sehr geschätzt.
191
Ich bin ziemlich neu in der C-Programmierung und habe auf Bitmaskierung gestoßen. Kann mir jemand das allgemeine Konzept und die Funktion der Bitmaskierung erklären? Beispiele werden sehr geschätzt.
Antworten:
Eine Maske definiert, welche Bits Sie behalten möchten und welche Bits Sie löschen möchten.
Beim Maskieren wird eine Maske auf einen Wert angewendet. Dies wird erreicht durch:
Unten finden Sie ein Beispiel für das Extrahieren einer Teilmenge der Bits im Wert:
Das Anwenden der Maske auf den Wert bedeutet, dass wir die ersten (höheren) 4 Bits löschen und die letzten (niedrigeren) 4 Bits behalten möchten. Somit haben wir die unteren 4 Bits extrahiert. Das Ergebnis ist:
Die Maskierung wird mit AND implementiert, daher erhalten wir in C:
Hier ist ein ziemlich häufiger Anwendungsfall: Extrahieren einzelner Bytes aus einem größeren Wort. Wir definieren die höherwertigen Bits im Wort als das erste Byte. Wir verwenden dafür zwei Operatoren
&
und>>
(nach rechts verschieben). So können wir die vier Bytes aus einer 32-Bit-Ganzzahl extrahieren:Beachten Sie, dass Sie die Reihenfolge der obigen Operatoren ändern können, zuerst die Maske und dann die Verschiebung. Die Ergebnisse sind die gleichen, aber jetzt müssten Sie eine andere Maske verwenden:
quelle
&
.#define MASK 0x000000FF .... my_uint32_t &= ~MASK
.b
um anzuzeigende binäre Literal wird nicht von allen Compilern unterstützt, richtig?Maskieren bedeutet, einen gewünschten Teil der Informationen beizubehalten , zu ändern oder zu entfernen. Sehen wir uns eine Bildmaskierungsoperation an. wie - diese Maskierungsoperation entfernt alles, was nicht Haut ist-
In diesem Beispiel führen wir eine UND- Operation durch. Es gibt auch andere Maskierungsoperatoren - OR , XOR .
Bitmaskierung bedeutet das Auferlegen einer Maske über Bits. Hier ist eine Bitmaskierung mit UND -
Es
1
bleiben also nur die mittleren 4 Bits (da sich diese Bits in dieser Maske befinden) übrig.Sehen wir uns das mit XOR an -
Jetzt werden die mittleren 4 Bits umgedreht (
1
wurden0
,0
wurden1
).Mit der Bitmaske können wir also auf einzelne Bits zugreifen [ Beispiele ]. Manchmal kann diese Technik auch zur Verbesserung der Leistung verwendet werden. Nehmen Sie dies zum Beispiel-
Diese Funktion gibt an, ob eine Ganzzahl ungerade / gerade ist. Mit Bitmasken können wir das gleiche Ergebnis mit mehr Effizienz erzielen.
Kurze Erklärung : Wenn das niedrigstwertige Bit einer Binärzahl
1
ungerade ist, ist es ungerade. denn0
es wird eben sein. Also, indem Sie und mit1
wir alle anderen Bits mit Ausnahme der niedrigstwertigen Bit , dh zu entferne:quelle