Maison > développement back-end > Golang > le corps du texte

Comment extraire des bits individuels d'un octet en Go ?

DDD
Libérer: 2024-11-06 17:06:02
original
305 Les gens l'ont consulté

How to Extract Individual Bits from a Byte in Go?

Obtenir des bits à partir d'octets dans Go

Pour extraire les bits individuels d'un octet dans Go, il existe plusieurs approches à considérer.

Représentation visuelle :

Pour une représentation visuelle des bits, vous pouvez utiliser fmt.Sprintf(" b", ...) pour imprimer l'octet au format binaire .

Opérations au niveau du bit :

Cependant, si vous devez utiliser les bits pour des opérations telles que le calcul de la distance de Hamming, vous devrez utiliser des opérateurs au niveau du bit.

Pour récupérer le nième bit d'un octet, au niveau du bit ET l'octet avec un masque dont le nième bit est défini sur 1 et le reste sur 0 (c'est-à-dire une puissance de 2). Par exemple, pour retrouver le 1er bit de l'octet 13 (00001101), masquez-le avec 1 (00000001). Si le résultat du ET au niveau du bit est égal au masque, le nième bit est 1.

Exemple de code :

<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>
Copier après la connexion

Calcul de la distance de Hamming :

Pour calculer la distance de Hamming entre deux octets, utilisez l'opération ET au niveau du bit pour comparer les bits correspondants. Si le bit résultant est 1, cela indique que les bits sont différents et vous incrémentez le nombre de distances.

<code class="go">diff := 0
mask := byte(1 << uint(j))
if (b1 & mask) != (b2 & mask) {
    diff++
}</code>
Copier après la connexion

Fonction pour la distance de Hamming :

Voici un exemple de fonction pour calculer la distance de Hamming entre deux tableaux d'octets :

<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>
Copier après la connexion

Cette fonction compare les bits des octets correspondants dans les tableaux et incrémente le nombre de distances pour chaque bit différent.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!