Opérateurs au niveau du bit en PHP

王林
Libérer: 2024-08-29 12:39:19
original
324 Les gens l'ont consulté

Comme leur nom l'indique, les opérateurs au niveau du bit en PHP effectuent des opérations au niveau du bit sur les opérandes sur lesquels ils doivent être opérés. Cela se fait en convertissant ces opérandes en leur niveau de bit, puis le calcul requis est effectué sur eux. Plusieurs opérations mathématiques peuvent être effectuées à ce niveau de bit plutôt qu'au niveau de valeur booléenne pour un traitement rapide.

PUBLICITÉ Cours populaire dans cette catégorie DEVELOPPEUR PHP - Spécialisation | Série de 8 cours | 3 tests simulés

Commencez votre cours de développement de logiciels libres

Développement Web, langages de programmation, tests de logiciels et autres

Meilleurs opérateurs bit à bit en PHP

Certains des opérateurs au niveau du bit en PHP sont ci-dessous :

1. ET au niveau du bit ( & )

Les opérateurs binaires fonctionnent sur 2 opérandes. En PHP, l'opérateur Bitwise AND prend deux nombres comme opérandes d'entrée et effectue AND sur chaque bit de ces deux nombres. Le résultat sera booléen et 1 si les deux bits sont 1 et 0 dans le cas contraire.

Syntaxe :

$first_op & $sec_op
Copier après la connexion

& est le symbole utilisé pour effectuer cette opération.

Exemple :

<?php
$a=61;
$b=32;
echo $a & $b;
?>
Copier après la connexion

Sortie :

Opérateurs au niveau du bit en PHP

Vous trouverez ci-dessous la représentation binaire de 61 et 32 ​​dans le tableau. Selon le symbole AND, il donne la sortie 1 uniquement si les deux bits contiennent 1 et renvoient 0 dans les autres cas. Ainsi, comme indiqué ci-dessous, seul le 3ème bit correspond à la condition, donc la sortie finale est 32.

Place value 128 64 32 16 8 4 2 1
$a 0 0 1 1 1 1 0 1 = 61
$b 0 0 1 0 0 0 0 0 = 32
Output 0 0 1 0 0 0 0 0 = 32
Valeur de position 128 64 32 16 8 4 2 1 $a 0 0 1 1 1 1 0 1 = 61 $b 0 0 1 0 0 0 0 0 = 32 Sortie 0 0 1 0 0 0 0 0 = 32

2. Bitwise OR( | )

Similar to Binary AND, the bitwise OR operator takes two numbers as input operands and performs OR on each bit of these two numbers, and the result is a Boolean. It returns 1 if either of the bits or both the bits are 1. Hence the result will be 0 only if both digits are 0.

Syntax:

$first_op | $sec_op
Copier après la connexion

| is the symbolical representation of bitwise OR.

Example:

<?php
$a=50;
$b=36;
echo $a | $b;
?>
Copier après la connexion

Output:

Opérateurs au niveau du bit en PHP

Below is the binary representation of 50 and 36, respectively, as shown in the table. As per the OR operation, we can see that in the 2nd, 3rd, 5th, and 6th bit, there are digits that are 1; hence the respective position below will also be 1, and the remaining digits are filled by 0 since they do not satisfy the condition. Hence the final output we get is 54.

Place value 128 64 32 16 8 4 2 1
$a 0 0 1 1 0 0 1 0 = 50
$b 0 0 1 0 0 1 0 0 = 36
Output 0 0 1 1 0 1 1 0 = 54

3. Bitwise XOR( ^ )

This binary operator takes the input of two numbers as operands and performs an XOR operation on every bit. The result of these two numbers will be true if either of the bits is true, and the output will be false if both bits are true and both bits are false. The below table can be used for reference to the same.

a b OUTPUT
0 0 0
0 1 1
1 0 1
1 1 0

Syntax:

$first_op ^ $sec_op
Copier après la connexion

^ is the symbolical representation of bitwise XOR.

Example:

<?php
$a=22;
$b=31;
echo $a ^ $b;
?>
Copier après la connexion

Output:

Opérateurs au niveau du bit en PHP

Below is the binary representation of 22 and 31, respectively, shown in the table. In the below table, we can see that in the 5th and 8th bits, one of the bits is 1; hence in the output, those bits are 1, and the remaining are 0. The resulting output is 9 when converted to decimal.

Place value 128 64 32 16 8 4 2 1
$a 0 0 0 1 0 1 1 0 = 22
$b 0 0 0 1 1 1 1 1 = 31
Output 0 0 0 0 1 0 0 1 = 9

4. Bitwise NOT( ~ )

Unlike above all operators, this is a unary operator; hence it performs a bitwise NOT on a single operand taken as its input. As the name suggests, bitwise NOT output is the opposite of its input.

Syntax:

~ $first_op
Copier après la connexion

~ is used to represent bitwise NOT.

Example:

<?php
$a=20;
$b=65;
echo $a & ~ $b;
?>
Copier après la connexion

Output:

Opérateurs au niveau du bit en PHP

In the above code, we first perform bitwise NOT on the second operator and then combine it with a bitwise AND with the first operator to get the output. The table below shows the result after NOT is performed on $y and the final output, which is 20 in decimal.

Place value 128 64 32 16 8 4 2 1
$a 0 0 0 1 0 1 0 0 = 20
$b 0 1 0 0 0 0 0 1 = 65
~$b 1 0 1 1 1 1 1 0 = 190
Output 0 0 0 1 0 1 0 0 = 20

5. Bit Shifting

This operation differs from the above operations and involves shifting bits. 2 types of shifting can be performed: left shift and right shift.

Left Shift( << )

Here the input bits are shifted to their left by the number of places as specified.

Syntax:

$first_op << $n
Copier après la connexion

Where $n refers to the number of places by which bits must be shifted.

Example:

<?php
$a=4;
$b=3;
echo $a << $b;
?>
</h5>
<p><strong>Output:</strong></p>
<p><img  src="https://img.php.cn/upload/article/000/000/000/172490636633998.png" alt="Opérateurs au niveau du bit en PHP" ></p>
<p>Here we are specifying to shift binary 4 by 3 digits to its left. Hence the resulting output we get is 32.</p>
<table>
<tbody>
<tr>
<td width="58"><strong>Place value</strong></td>
<td width="58"><strong>128</strong></td>
<td width="58"><strong>64</strong></td>
<td width="58"><strong>32</strong></td>
<td width="58"><strong>16</strong></td>
<td width="58"><strong>8</strong></td>
<td width="58"><strong>4</strong></td>
<td width="58"><strong>2</strong></td>
<td width="58"><strong>1</strong></td>
<td width="58"></td>
<td width="58"></td>
</tr>
<tr>
<td width="58"><strong>$a</strong></td>
<td width="58">0</td>
<td width="58">0</td>
<td width="58">0</td>
<td width="58">0</td>
<td width="58">0</td>
<td width="58">1</td>
<td width="58">0</td>
<td width="58">0</td>
<td width="58">=</td>
<td width="58">4</td>
</tr>
<tr>
<td width="58"><strong>Output</strong></td>
<td width="58">0</td>
<td width="58">0</td>
<td width="58">1</td>
<td width="58">0</td>
<td width="58">0</td>
<td width="58">0</td>
<td width="58">0</td>
<td width="58">0</td>
<td width="58">=</td>
<td width="58">32</td>
</tr>
</tbody>
</table>
<h5>Right Shift( >> )</h5>
<p>Here we are shifting the input bits to their right by the number of places as specified.</p>
<p><strong>Syntax</strong>:</p>
<pre class="brush:php;toolbar:false">$first_op >> $n
Copier après la connexion

Where $n is the number of places it is to be shifted.

Example:

<?php
$a=7;
$b=2;
echo $a >> $b;
?>
Copier après la connexion

Output:

Opérateurs au niveau du bit en PHP

Here we are shifting binary 7 by two bits to its right. Hence the resulting output we get is 1.

Place value 128 64 32 16 8 4 2 1
$a 0 0 0 0 0 1 1 1 = 7
output 0 0 0 0 0 0 0 1 = 1

Conclusion

Above, we have covered all the basic bitwise operations used in PHP. As their name suggests, they can operate only on each bit of its input and not on whole numbers. They are still used in modern coding as they have a few advantages over the present join since data storing and fetching is relatively lesser and boosts performance too.

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!

Étiquettes associées:
php
source:php
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!