Maison > développement back-end > Golang > Comment puis-je extraire des bits individuels d'un octet dans Go ?

Comment puis-je extraire des bits individuels d'un octet dans Go ?

Mary-Kate Olsen
Libérer: 2024-11-04 09:40:01
original
1095 Les gens l'ont consulté

How can I extract individual bits from a byte in Go?

Comment puis-je obtenir les bits d'un octet en Golang ?

Comprendre le problème

La question pose un défi : étant donné un octet, comment pouvons-nous extraire ses bits individuels ? Cette opération est essentielle pour des tâches telles que le calcul de la distance de Hamming entre les octets.

Manipulation de bits dans Go

Go fournit divers opérateurs au niveau du bit pour manipuler les bits. La clé pour extraire des bits réside dans l'utilisation de l'opérateur ET au niveau du bit (&).

Méthode spécifique

Pour obtenir le nième bit d'un octet, nous utilisons un masque qui est le chiffre 2(n-1). Par exemple, pour obtenir le premier bit de byte(1), nous utilisons le masque 20, qui est byte(1). On effectue ensuite une opération ET au niveau du bit :

<code class="go">result = byte(1) & byte(1) // Output: 1</code>
Copier après la connexion

Si le résultat est égal au masque, cela signifie que le bit est à 1 ; sinon, c'est 0.

Exemple : Calcul de 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) {
    diff := 0
    for i := 0; i < len(a); i++ {
        for j := 0; j < 8; j++ {
            mask := byte(1 << uint(j))
            if (a[i] & mask) != (b[i] & mask) {
                diff++
            }
        }
    }
    return diff, nil
}</code>
Copier après la connexion

Cette fonction calcule efficacement la distance de Hamming en utilisant la manipulation de bits pour comparer les bits individuels entre deux octets.

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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal