Quand dois-je utiliser un opérateur au niveau du bit?
J'ai lu la suite d'un Débordement de Pile questions, et je comprends les différences entre le bit à bit et logique.
Cependant, aucun d'entre eux explique quand je dois utiliser les opérateurs de bits ou logique.
Quand dois-je utiliser les opérateurs sur les bits plutôt que logiques et vice versa?
Dans quels cas ai-je besoin de comparer bit par bit?
Je ne suis pas en posant des questions sur les différences, mais je demande à la situation où vous avez besoin d'utiliser des opérateurs au niveau du bit.
source d'informationauteur shin
Vous devez vous connecter pour publier un commentaire.
Au niveau du bit
|
et&
et logique||
et&&
sont totalement différent.Opérateurs au niveau du bit effectuer des opérations sur les bits de deux nombres et de retourner le résultat. Cela signifie qu'il n'est pas un oui ou un non chose. Si ils sont utilisés dans les instructions conditionnelles, ils sont souvent utilisés dans le cadre de des comparaisons logiques. Par exemple:
Opérateurs logiques comparer les deux (ou plus) les conditions ou les expressions et renvoyer true ou false. Vous utilisez le plus souvent dans les instructions conditionnelles, comme
if
etwhile
. Par exemple:Bit à bit est utile pour des choses en PHP juste comme tout le reste.
Quelle est la valeur que peut avoir plusieurs états activés en même temps (peut-être autorisations)?
Dans la plupart des cas, vous souhaiterez probablement utiliser des opérateurs logiques. Ils sont utilisés pour la combinaison de conditions logiques, généralement à contrôler le flux de programme, par exemple
($isAlive && $wantsToEat)
.Opérateurs au niveau du bit sont utilisés lorsque vous souhaitez effectuer des opérations sur un bit-par-bit, sur la base des sous-jacents des représentations binaires des nombres entiers. par exemple,
(5 & 3) == 7
. Comme d'autres l'ont suggéré, il n'y a généralement pas beaucoup de l'appel dans le genre de demande qui tend à obtenir de l'écrit en PHP (bien qu'il y est de niveau inférieur langages, comme le C).Opérateurs au niveau du bit sont utilisés spécifiquement dans le cas de la valeur binaire de représentation.
Les opérateurs logiques sont les plus privilégiées à des fins de comparaison et sont un peu plus rapide que l'opérateur au niveau du bit en cas de
AND
etXOR
opérations.si
func1()
retourne false, il ne sera pas pris la peine d'appelerfunc2()
Fera appel à la fois les fonctions indépendamment de leurs valeurs renvoyées.
Les opérateurs sur les bits sont utiles lors de la manipulation des bits d'un nombre. Regarder ici. Sinon, vous devez utiliser les opérateurs logiques. Aussi les opérateurs logiques sont court-circuitées. Par exemple, si vous avez
a && b
eta
estfalse
b
n'est pas évalué.Avertissement: je viens d'une Java arrière-plan, mais je suppose que dans PHP c'est la même chose.
Ils sont deux très différents opérateurs.
Quand vous voulez deux conditions doivent être simultanément vraies, vous utilisez la logique
&&
. Par exemple, je veux imprimer "joyeux anniversaire" que si la personne à l'anniversaire d'aujourd'hui && ils ont de l'argent dans le compte. Il est utilisé chaque fois que nous voulons effectuer la composition de deux ou plusieurs conditions, surtout dans les instructions if et boucle conditions (mais pas exclusivement).Lorsque vous souhaitez effectuer des opérations au niveau du bit (ce qui, dans la journée-à-jour de programmation PHP est beaucoup plus rare), vous pouvez utiliser le bit à bit
&
. C'est beaucoup plus rare, et vous pourriez être performants au niveau du bit de masquage (j'en doute), de sorte que vous pourriez voulez seulement un résultat que les deux entiers représentent, dans ce cas vous pouvez direnewAttribute = attribute1 & attribute2;
.Bien, considère que il y a
$x = (false && some_function());
ici la valeur de$x
sera sans appel de lasome_function()
parce que la première valeur est FALSE.Mais que faire si vous avez besoin d'appeler cette fonction, de toute façon? Utilisation
$x = (false & some_function());
.En d'autres termes, la
&
utilise PLUS de traitement que le &&, juste parce que && ne pas courir à travers toutes les valeurs à vérifier. Si il trouve une valeur fausse, il serait de retour, ne pas regarder les autres valeurs.Et dans les opérations logiques, utilisez le
&&
opérateur comme il est utilisé pour retourner la logique de valeur de l'opération, où&
est utilisé pour ensemble une valeur et uneif
instruction, elle retourne toujours true.Si vous voulez en savoir plus comment il fonctionne, consultez ce site:
http://www.bitwiseoperatorcalculator.com/
À venir à partir de PHP, je ne l'ai jamais utilisé avant, mais il suffit de lire pour le plaisir, ce site donne des explications simples!