Maison  >  Article  >  développement back-end  >  Comment fonctionnent les opérations au niveau du bit et le masquage dans Go, et pourquoi \"isAdmin & rôles == isAdmin\" est-il évalué à True ?

Comment fonctionnent les opérations au niveau du bit et le masquage dans Go, et pourquoi \"isAdmin & rôles == isAdmin\" est-il évalué à True ?

Patricia Arquette
Patricia Arquetteoriginal
2024-10-27 03:07:02631parcourir

How Do Bitwise Operations and Masking Work in Go, and Why Does

Masquage de bits et opérations au niveau du bit dans Golang : comprendre la logique au niveau du bit

Dans Go, le masquage de bits et les opérations au niveau du bit fournissent des moyens efficaces de manipuler des données binaires. Explorons le fonctionnement de ces opérations et clarifions votre confusion concernant le masquage de bits.

Masquage de bits : une introduction

Le masquage de bits est une technique qui utilise des constantes spécialement conçues pour représenter différents rôles ou autorisations. Dans votre extrait de code, vous avez utilisé la constante iota pour créer une série de constantes contenant chacune un seul bit « 1 » à une position spécifique. Ces constantes sont ensuite utilisées pour construire une variable de rôles à l'aide d'un OU au niveau du bit ('|') :

<code class="go">var roles byte = isAdmin | canSeeFinancials | canSeeEurope</code>

Cette opération définit les bits « 1 » dans les rôles pour qu'ils correspondent aux positions des bits « 1 » dans les trois constantes. Visualiser les représentations binaires aide :

isAdmin          00000001
canSeeFinancials 00000100
canSeeEurope     00100000
-------------------------
roles            00100101

ET au niveau du bit et masquage

Votre confusion vient de l'opération ET au niveau du bit ('&') utilisée dans cette ligne :

<code class="go">fmt.Printf("Is Admin? %v\n", isAdmin &amp; roles == isAdmin)</code>

Cette opération vérifie si isAdmin est défini dans la variable de rôles. Cependant, l'expression estAdmin & rôles renvoie un nombre qui contient des bits « 1 » uniquement là où isAdmin et les rôles ont des bits « 1 ».

Dans votre cas, puisque les rôles incluent le bit isAdmin, le résultat de isAdmin & les rôles seront égaux à isAdmin. C'est pourquoi l'expression est évaluée comme vraie.

Cependant, si vous utilisez l'égalité au niveau des bits la moins stricte (==), vous comparez l'intégralité de la représentation binaire des rôles à isAdmin. Étant donné que les rôles contiennent des bits supplémentaires, ils ne sont pas égaux à isAdmin, ce qui entraîne false.

Conclusion

Le masquage de bits et les opérations au niveau du bit sont des outils puissants qui vous permettent d'effectuer efficacement des opérations logiques sur des données binaires. En comprenant les concepts derrière la manipulation de bits, vous pouvez écrire du code plus robuste et plus efficace dans Go.

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!

Déclaration:
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