Maison > Article > développement back-end > Introduction à l'utilisation de l'opération médiane php
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 & $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 & 12 = 812 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
64 E_COMPILE_ERROR
128 E_COMPILE_WARNING
256 E_
2047 E_ALL
2048 E_STRICT
4096 E_RECOVERABLE_ERROR
Je trouve que les valeursde valeur sautent toutes, et elles sont toutes 2 à la puissance n+1
0000 0001 E_ERROR
0000 0010 E_WARNING0001 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!