Maison  >  Article  >  développement back-end  >  Introduction à l'utilisation de l'opération médiane php

Introduction à l'utilisation de l'opération médiane php

怪我咯
怪我咯original
2017-06-20 13:32:011765parcourir

phpLes opérations sur les bits ne sont pas couramment utilisées en PHP, mais elles sont très utiles. Présentons l'utilisation des opérations sur les bits PHP.

  • $a & $b et (ET au niveau du bit)

  • $a | $b ou (OU au niveau du bit)

  • $a ^ $b

  • $a f7f9c63ab65611ee4518d3a900f54fe0> $b Shift right(right Shift)

  • Explication détaillée
  • $a & $b Bitwise AND définit les bits dans $a et $b qui sont tous deux égaux à 1 à 1 ;

10 101012 11001000 8
$a | $b au niveau du bit OU définit l'un des $a ou $ b à 1;
Exemple : 10 | 12 = 14

10 1010
例:10 & 12 = 8
12 1100

1110 14
$a ^ $b XOR au niveau du bit
Exemple : 10 ^ 12
10 1010
12 1100
0110 6
~a La notation bit à bit définit le 0 dans $a à 1 et le 1 à 0
Exemple : ~10 =
10 1010 1111111111111111111111111111111 11111111111110101 -11
$a 5e6a65c14efa79b458e0275ff3b56821> $b right shift déplace la valeur de $a vers la droite $b fois (chaque déplacement signifie diviser par 2
Exemple : 1024 77522c0373ace77606c0bea216c233c0> $b Shift right(shift right)
Explication détaillée de $a & $ b Bitwise AND définit les bits qui sont à la fois 1 dans $a et $b sur 1 ; Exemple : 10 & 12 = 810 101012 1100 1000 8
$a | $b Bitwise OR définit les bits dans $a ou $b Une valeur de 1. est défini sur 1 ; exemple : 10 | 12 = 1410 101012 1100 1110 14
$a ^ $b Exemple XOR au niveau du bit : 10 ^ 1210 101012 1100 0110 6
~a Bitwise NOT Le 0 dans $a est défini sur 1, et le 1 est défini sur 0. Exemple : ~10 = 10 1010 11111111111111111111111111111111111111111111111110101 -11
$a << ing par 2); exemple : 1 << 10 = 10241(1) Décaler vers la gauche de 10 chiffres 10000000000(1024) équivaut à 1*2 élevé à la puissance 10. Il n'y a pas d'opération d'exponentiation en PHP C'est vraiment déprimant.
$a > Le décalage de 2 bits est de 100000000(256)



La combinaison du champ drapeau et de l'
opérateur de bits




en PHP Liste des valeurs des paramètres pour error_reporting


1 E_ERROR


2 E_WARNING

  • 4 E_PARSE

  • 8 E_NOTICE

  • 16 E_CORE_ERROR

  • 32 E_CORE_WARNING



    64 E_COMPILE_ERROR


  • 128 E_COMPILE_WARNING


  • 256 E_

    USER_ERROR

  • 512 E_USER_WARNING

  • 1024 E_USER_NOTICE


  • 2047 E_ALL


  • 2048 E_STRICT


  • 4096 E_RECOVERABLE_ERROR

  • Je trouve que les valeurs​​de valeur sautent toutes, et elles sont toutes 2 à la puissance n+1

    . Regardez ce qui suit. Convertissez la valeur de value en binaire.
  • valeur constante

    0000 0001 E_ERROR

    0000 0010 E_WARNING
  • 0000 0100 E_PARSE
0000 1000 E_NOTICE

0001 0000 E_CORE_ERROR

00 10 0000 E_CORE_WARNING

.

.

.
… …Chaque fois qu'on en ajoute un à la puissance, un chiffre est ajouté au système binaire (presque tous ceux qui ont étudié l'informatique le savent :)…)
Remarque : Chaque option correspond à un chiffre (1 est Activer 0 pour l'éteindre)

D'accord, jetons un coup d'œil aux avantages de définir des paramètres comme celui-ci.

Prenons trois paramètres comme exemple pour voir l'effet


Obtenir les paramètres :

Le jugement indiquant si un certain élément est activé peut être obtenu en utilisant des opérations sur les bits (& - La règle "ET" signifie que tout 1 vaut 1, sinon c'est 0)

//E_PARSE

if($n & 4){

//E_PARSE est activé

//4 Le nombre binaire est 0100, car seul le troisième bit est 1, donc lorsque l'opération "&" est effectuée,
error_reporting(3);//decbin(3) == 0000 0011; (相当于设置 E_WARNING 和 E_ERROR )
error_reporting(4);//decbin(4) == 0000 0100;(相当于设置 E_PARSE )
error_reporting(5);//decbin(5) == 0000 0101;(相当于设置 E_PARSE 和 E_ERROR)
les autres

positions sont toutes mises à 0

// Par conséquent, seul le troisième bit de $n est également 1 et le résultat sera supérieur à 0.

//Tels que 4(0100),5(0101),6(0110),7(0111)

}else{

//E_PARSE est fermé
//Le troisième bit est 0 Indique que cette option est désactivée
>
Modifier les paramètres : ($n représente la valeur décimale actuelle)
Pendant l'application, nous pouvons régler le commutateur sur un certain bit selon les besoins.
Voir utilisation ci-dessous.

//Fermez l'élément E_PARSE et utilisez la règle '&' « AND »
$n = $n&(8192-4-1);
//Pourquoi utiliser 8191 ?
//Cela a quelque chose à voir avec le nombre d'options dont vous disposez. Cette marque d'affichage d'erreur utilise un total de 13 bits (le nombre binaire de 4096 est de 13 bits), tandis que 8192 est (14 bits).
//Pourquoi est-il réduit de 4 et réduit de 1 ?
//8192-4-1=8187. (1111111111011) Le nombre binaire est composé de 13 chiffres, ce qui correspond au nombre maximum de chiffres que nous utilisons. Et la valeur correspondante dans le troisième bit est 0.
//Utiliser ce nombre pour effectuer une opération ET au niveau du bit avec n'importe quel nombre compris entre 1 et 4096. À l'exception du troisième bit, qui sera mis à 0, les valeurs des autres bits ne changeront pas ? Règle "ET":)
//De même, si vous souhaitez désactiver E_WARNING
//$n = $n&(8192-2-1);

//Pour activer le Élément E_PARSE, utilisez la règle ' |'"ou"
$n = $n|4;
//Après avoir lu la clôture ci-dessus, vous aurez peut-être quelques idées sur l'ouverture :)
// '|' — Règle "ou" S'il y a 1, c'est 1, sinon c'est 0
//Ce qui précède est que lorsque tous les bits sont à 1, cela n'affecte pas les autres bits. Maintenant, cela devient le cas lorsque tous les bits sont à 0. , cela n'affecte pas les autres bits :)
// Il nous suffit donc de définir la valeur correspondante du bit binaire de l'opérande suivant sur 1, et tous les autres bits sur 0 seront OK.
//L'avez-vous trouvé ? Il s'agit de la valeur décimale correspondant à chacun de nos éléments de paramétrage :


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