首頁  >  文章  >  後端開發  >  PHP 中的位元運算符

PHP 中的位元運算符

王林
王林原創
2024-08-29 12:39:19353瀏覽

顧名思義,PHP 中的位元運算子對要操作的運算元執行位元層級的運算。它是透過將這些操作數轉換為其位元級來完成的,然後對它們進行所需的計算。為了快速處理,可以在此位元層級而不是布林值層級執行多種數學運算。

廣告 該類別中的熱門課程 PHP 開發人員 - 專業化 | 8 門課程系列 | 3次模擬測驗

開始您的免費軟體開發課程

網頁開發、程式語言、軟體測試及其他

PHP 中的頂層位元運算子

PHP 中的一些位元運算子如下:

1.位元與( & )

二元運算子作用於 2 個運算元。在 PHP 中,位元 AND 運算子將兩個數字作為輸入運算元,並對這兩個數字的每一位元執行 AND 運算。如果兩位都為 1,則結果將為布林值,如果為 0,則結果為 1。

文法:

$first_op & $sec_op

& 是用於執行此操作的符號。

範例

<?php
$a=61;
$b=32;
echo $a & $b;
?>

輸出:

PHP 中的位元運算符

下面是表中61和32的二進位表示。根據 AND 符號,只有當兩個位元都包含 1 時,它才會輸出 1,否則傳回 0。所以如下圖,只有第3位符合條件,所以最終輸出是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
位置值 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 輸出 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

| is the symbolical representation of bitwise OR.

Example:

<?php
$a=50;
$b=36;
echo $a | $b;
?>

Output:

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

^ is the symbolical representation of bitwise XOR.

Example:

<?php
$a=22;
$b=31;
echo $a ^ $b;
?>

Output:

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

~ is used to represent bitwise NOT.

Example:

<?php
$a=20;
$b=65;
echo $a & ~ $b;
?>

Output:

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

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="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

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

Example:

<?php
$a=7;
$b=2;
echo $a >> $b;
?>

Output:

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.

以上是PHP 中的位元運算符的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn