Beim Bearbeiten von Bytewerten in Go ist es oft notwendig, mit einzelnen Bits zu arbeiten. Dieser Artikel untersucht Methoden zum Extrahieren von Bitdarstellungen aus Bytes und geht dabei auf die besondere Herausforderung ein, die Bitdarstellung für den Bytewert 1 zu bestimmen.
Um die Bits in einem Byte visuell darzustellen, müssen Sie kann fmt.Sprintf(" b", ...) verwenden, wie von anderen vorgeschlagen. Für mathematische Operationen mit Bits sind jedoch bitweise Operatoren unerlässlich.
Um das nte Bit eines Bytes zu bestimmen, führen Sie eine bitweise UND-Verknüpfung (&) zwischen dem Byte und einem Byte mit durch das nte Bit auf 1 gesetzt (Maske). Diese Maske wird als 2n-1 berechnet.
Um das 1. Bit der Zahl 13 (00001101) zu finden, maskieren Sie es mit 20 = 1 (00000001):
fmt.Print(13 & 1) // Output: 1
Das Ergebnis ist 1, was anzeigt, dass das 1. Bit 1 ist.
Die Hamming-Distanz zwischen zwei Bytes misst die Anzahl der verschiedenen Bits. Hier ist eine Funktion, die den Hamming-Abstand zwischen zwei Byte-Arrays (Einzelbyte-Arrays im gegebenen Szenario) berechnet:
func hamming(a, b []byte) (int, error) { if len(a) != len(b) { return 0, errors.New("a b are not the same length") } diff := 0 for i := 0; i < len(a); i++ { b1 := a[i] b2 := b[i] for j := 0; j < 8; j++ { mask := byte(1 << uint(j)) if (b1 & mask) != (b2 & mask) { diff++ } } } return diff, nil }
Diese Funktion verwendet bitweise UND-Operationen, um entsprechende Bits der Byte-Arrays zu vergleichen. Der Go Playground demonstriert seine Verwendung:
https://play.golang.org/p/O1EGdzDYAn
Das obige ist der detaillierte Inhalt vonWie kann ich die Bitdarstellung eines Bytewerts in Go extrahieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!