Wie extrahiere ich einzelne Bits aus einem Byte in Go?

DDD
Freigeben: 2024-11-06 17:06:02
Original
368 Leute haben es durchsucht

How to Extract Individual Bits from a Byte in Go?

Bits aus Bytes in Go abrufen

Um die einzelnen Bits aus einem Byte in Go zu extrahieren, gibt es mehrere Ansätze zu berücksichtigen.

Visuelle Darstellung:

Für eine visuelle Darstellung der Bits können Sie fmt.Sprintf(" b", ...) verwenden, um das Byte im Binärformat zu drucken .

Bitweise Operationen:

Wenn Sie jedoch die Bits für Operationen wie die Berechnung der Hamming-Distanz verwenden müssen, müssen Sie bitweise Operatoren verwenden.

Um das n-te Bit eines Bytes abzurufen, bitweise UND das Byte mit einer Maske, bei der das n-te Bit auf 1 und der Rest auf 0 (d. h. eine Potenz von 2) gesetzt ist. Um beispielsweise das 1. Bit des Bytes 13 (00001101) zu finden, maskieren Sie es mit 1 (00000001). Wenn das Ergebnis der bitweisen UND-Verknüpfung gleich der Maske ist, ist das n-te Bit 1.

Beispielcode:

<code class="go">fmt.Print(13 & 1) // Output: 1 (1st bit)
fmt.Print(13 & 2) // Output: 0 (2nd bit)
fmt.Print(13 & 4) // Output: 4 (3rd bit)
fmt.Print(13 & 8) // Output: 8 (4th bit)</code>
Nach dem Login kopieren

Hamming-Distanzberechnung:

Um den Hamming-Abstand zwischen zwei Bytes zu berechnen, verwenden Sie die bitweise UND-Operation, um die entsprechenden Bits zu vergleichen. Wenn das resultierende Bit 1 ist, bedeutet dies, dass die Bits unterschiedlich sind, und Sie erhöhen die Distanzanzahl.

<code class="go">diff := 0
mask := byte(1 << uint(j))
if (b1 & mask) != (b2 & mask) {
    diff++
}</code>
Nach dem Login kopieren

Funktion für Hamming-Distanz:

Hier ist eine Beispielfunktion zur Berechnung des Hamming-Abstands zwischen zwei Byte-Arrays:

<code class="go">func hamming(a, b []byte) (int, error) {
    ...
    for j := 0; j < 8; j++ {
        mask := byte(1 << uint(j))
        if (b1 & mask) != (b2 & mask) {
            diff++
        }
    }
    ...
}</code>
Nach dem Login kopieren

Diese Funktion vergleicht die Bits entsprechender Bytes in den Arrays und erhöht den Abstandszähler für jedes ungleiche Bit.

Das obige ist der detaillierte Inhalt vonWie extrahiere ich einzelne Bits aus einem Byte in Go?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage