php 位运算符
封面图
•
2025-10-21
•
PHP
165
0
0
0
在 PHP 中,**位运算符**(Bitwise Operators)用于对整数进行二进制级别的操作。它们直接对数字的二进制表示进行操作,常用于优化性能、设置或检查标志(flags)、加密等场景。 --- ## ✅ PHP 中常用的位运算符 | 运算符 | 名称 | 说明 | |--------|--------------|----------------------------------------------------------------------| | `&` | 按位与 | 对两个数的每一位进行比较,只有当两个位都为 `1` 时结果才为 `1`。 | | `|` | 按位或 | 只要有一个位是 `1`,结果就是 `1`。 | | `^` | 按位异或 | 两个位不同时结果为 `1`,相同则为 `0`。 | | `~` | 按位取反 | 将所有位取反(0 变 1,1 变 0)。 | | `<<` | 左移 | 将数字的二进制位向左移动指定的位数,相当于乘以 2 的幂次。 | | `>>` | 右移 | 将数字的二进制位向右移动指定的位数,相当于除以 2 的幂次。 | --- ## 🔍 示例说明 ### 1. 按位与 (`&`) ```php $a = 5; // 二进制: 0101 $b = 3; // 二进制: 0011 $result = $a & $b; // 0001 => 1 echo $result; // 输出 1 ``` ### 2. 按位或 (`|`) ```php $a = 5; // 0101 $b = 3; // 0011 $result = $a | $b; // 0111 => 7 echo $result; // 输出 7 ``` ### 3. 按位异或 (`^`) ```php $a = 5; // 0101 $b = 3; // 0011 $result = $a ^ $b; // 0110 => 6 echo $result; // 输出 6 ``` ### 4. 按位取反 (`~`) ```php $a = 5; // 二进制: 00000101 $result = ~$a; // 二进制: 11111010(在 PHP 中是补码表示) echo $result; // 输出 -6 (因为 PHP 使用有符号整数) ``` > 注意:PHP 中的 `~` 是有符号的,所以结果会是负数。 ### 5. 左移 (`<<`) ```php $a = 5; // 二进制: 0101 $result = $a << 1; // 1010 => 10 echo $result; // 输出 10 ``` > 左移一位相当于乘以 2。 ### 6. 右移 (`>>`) ```php $a = 8; // 二进制: 1000 $result = $a >> 1; // 0100 => 4 echo $result; // 输出 4 ``` > 右移一位相当于除以 2。 --- ## 📌 实际应用场景 ### 1. 设置/检查标志(Flags) ```php define('READ', 1); // 0001 define('WRITE', 2); // 0010 define('EXECUTE', 4); // 0100 $permissions = READ | WRITE; // 0011 if ($permissions & READ) { echo "Read permission is set."; } ``` ### 2. 快速计算幂 ```php $a = 1 << 3; // 2^3 = 8 echo $a; // 输出 8 ``` ### 3. 交换两个变量(无需临时变量) ```php $a = 5; $b = 3; $a = $a ^ $b; $b = $a ^ $b; $a = $a ^ $b; echo "a = $a, b = $b"; // a = 3, b = 5 ``` --- ## ⚠️ 注意事项 - 位运算符只适用于整数。 - 在 PHP 中,整数是带符号的,因此 `~` 操作的结果可能为负数。 - 如果你需要处理无符号整数,可以使用 `sprintf` 或其他方式转换。 --- 如果你有具体的使用场景或问题,欢迎继续提问!
上一篇:
base类相关函数 要看的
下一篇:
unpack 解压缩二进制数据
php 位运算符
标题录入,一次不能超过6条
留言
评论