Le masquage de bits et les opérations au niveau du bit sont des techniques essentielles pour travailler avec des données binaires et effectuer efficacement des opérations spécifiques en programmation.
Considérez le code suivant :
<code class="go">package main import ( "fmt" ) const ( isAdmin = 1 << iota isHeadquarters canSeeFinancials canSeeAfrica canSeeAsia canSeeEurope canSeeNorthAmerica canSeeSouthAmerica ) func main() { var roles byte = isAdmin | canSeeFinancials | canSeeEurope fmt.Printf ("%b\n", roles) fmt.Printf ("Is Admin? %v\n", isAdmin & roles == isAdmin) }</code>
Dans ce code, vous définissez plusieurs masques de bits constants à l'aide de l'opérateur de décalage de bits (<<), où chaque bit représente un rôle ou une autorisation spécifique.
Les rôles variables se voient attribuer le résultat d'une opération OU au niveau du bit entre les masques de bits isAdmin, canSeeFinancials et canSeeEurope. Il en résulte une valeur binaire où les bits représentant les rôles sélectionnés sont mis à 1, vous permettant de vérifier rapidement si un utilisateur possède plusieurs rôles.
L'expression estAdmin & rôles effectue une opération ET au niveau du bit entre le masque de bits isAdmin et la variable de rôles. La valeur binaire résultante est comparée au masque de bits isAdmin à l'aide de l'opérateur d'égalité (==). Si le bit isAdmin est défini dans la variable rôles (indiquant que l'utilisateur dispose des privilèges d'administrateur), le résultat est évalué à vrai.
Lorsque vous comparez les rôles directement à isAdmin à l'aide de rôles == isAdmin, vous vérifiez si la valeur binaire entière des rôles est égale à isAdmin. Cela ne serait vrai que si les rôles contenaient uniquement le rôle isAdmin et aucun autre rôle.
Dans l'exemple donné, où les rôles incluent plusieurs rôles, la comparaison des rôles == isAdmin est évaluée comme fausse car la représentation binaire des rôles contient des rôles supplémentaires. bits.
En utilisant le masquage de bits et les opérations au niveau du bit, vous pouvez vérifier de manière efficace et concise des rôles ou des autorisations spécifiques au sein d'une seule variable, rendant votre code plus concis et efficace.
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!