Bitmanipulation in Go: Setzen und Löschen einzelner Bits
In Go kann die Manipulation einzelner Bits innerhalb einer Ganzzahl eine nützliche Technik für verschiedene Zwecke sein Anwendungen. Eine Möglichkeit, dies zu erreichen, sind bitweise Operationen.
Ein Bit setzen
Um das Bit an einer bestimmten Position zu setzen, können Sie die folgende Funktion verwenden:
func setBit(n int, pos uint) int { n |= (1 << pos) return n }
Diese Funktion funktioniert, indem sie die Zahl 1 um die angegebene Position (pos) nach links verschiebt, indem Sie die Taste << Operator. Dadurch wird eine Maske erstellt, die das entsprechende Bit aktiviert. Wenn Sie diese Maske mit ODER (|) mit der ursprünglichen Ganzzahl verknüpfen, wird das Zielbit auf 1 gesetzt, während die anderen Bits erhalten bleiben.
Ein Bit löschen
Um ein zu löschen Um ein Bit an einer bestimmten Position zu platzieren, können Sie die folgende Funktion verwenden:
func clearBit(n int, pos uint) int { mask := ^(1 << pos) n &= mask return n }
Diese Funktion erstellt eine Maske, indem sie das Bit an der Zielposition mithilfe von ^ invertiert Betreiber. In der resultierenden Maske ist das Zielbit effektiv auf 0 gesetzt. Wenn Sie diese Maske mit UND (&) mit der ursprünglichen Ganzzahl verknüpfen, wird das Zielbit gelöscht, während die anderen Bits unberührt bleiben.
Überprüfen, ob ein Bit vorhanden ist ist gesetzt
Abschließend können Sie mit der folgenden Funktion überprüfen, ob ein Bit gesetzt ist:
func hasBit(n int, pos uint) bool { val := n & (1 << pos) return val > 0 }
Diese Funktion wird ausgeführt eine UND-Operation zwischen der Ganzzahl und einer Maske, deren entsprechendes Bit auf 1 gesetzt ist. Wenn das Ergebnis größer als 0 ist, zeigt dies an, dass das Zielbit gesetzt ist, und die Funktion gibt „true“ zurück. Andernfalls wird false zurückgegeben.
Das obige ist der detaillierte Inhalt vonWie können Sie mithilfe bitweiser Operationen einzelne Bits in Go setzen, löschen und überprüfen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!