Was ist Bitmaskierung?
Ich bin ziemlich neu in der C-Programmierung, und ich begegnete bit-Maskierung. Kann mir jemand erklären das Allgemeine Konzept und die Funktion der bit-Maskierung? Beispiele sind sehr geschätzt.
InformationsquelleAutor der Frage Mr.Z | 2012-05-08
Du musst angemeldet sein, um einen Kommentar abzugeben.
Einer Maske definiert, welche bits, die Sie behalten möchten, und die bits, die Sie löschen möchten.
Maskierung ist bei der Anwendung einer Maske auf einen Wert. Dies wird erreicht by doing:
Unten ist ein Beispiel für die Extraktion einer Teilmenge der bits in den Wert:
Dem auftragen der Maske auf den Wert bedeutet, wir wollen klar die erste (höhere) 4 bits, und halten Sie die Letzte (untere) 4 bits. So haben wir extrahiert die unteren 4 bits. Das Ergebnis ist:
Maskierung durchgeführt wird UND so in C erhalten wir:
Hier ist eine ziemlich häufige use-case: die Extraktion von einzelnen bytes eines größeren Wortes. Definieren wir die high-order bits im Wort als das erste byte. Verwenden wir zwei Operatoren für diese
&
und>>
(shift right). Dies ist, wie wir extrahieren die vier bytes aus einem 32-bit-integer:Beachten Sie, dass Sie könnten, wechseln Sie die Reihenfolge der Operatoren vor, Sie könnten zuerst die Maske, dann die Verschiebung. Die Ergebnisse sind die gleichen, aber jetzt würden Sie haben, um eine andere Maske:
InformationsquelleAutor der Antwort user239558