PHP 中的位运算符是对整数的二进制表示进行操作的运算符,包括按位与(&)、按位或(|)、按位异或(^)、按位取反(~)、左移(<<)和右移(>>)。以下是它们的示例和运用场景:
- 示例:
$a = 5 & 3;
,5 的二进制是 101,3 的二进制是 011,按位与运算后结果为 001,即十进制的 1。
- 运用场景:可以用于检查某个数的特定位是否为 1。例如,判断一个数是否为偶数,可通过
$num & 1
来判断,结果为 0 则是偶数,为 1 则是奇数。
- 示例:
$a = 5 | 3;
,5 的二进制是 101,3 的二进制是 011,按位或运算后结果为 111,即十进制的 7。
- 运用场景:用于将某些位置为 1。比如有一组权限标志,要给用户同时赋予读取和写入权限,可以通过
$permissions = $permissions | READ_PERMISSION | WRITE_PERMISSION
来实现。
- 示例:
$a = 5 ^ 3;
,5 的二进制是 101,3 的二进制是 011,按位异或运算后结果为 110,即十进制的 6。
- 运用场景:可以用于在不使用临时变量的情况下交换两个变量的值。
- 示例:
$a = ~5;
,5 的二进制是 00000101,按位取反后为 11111010,由于 PHP 中整数是有符号的,所以结果为 - 6(补码表示)。
- 运用场景:在某些算法中,可能需要对所有位取反来表示特定的状态或进行特殊的计算。
- 示例:
$a = 5 << 2;
,5 的二进制是 101,左移 2 位后变为 10100,即十进制的 20。
- 运用场景:可以用于快速计算一个数乘以 2 的幂次方。例如,
$num << 3
相当于 $num * 8
。
- 示例:
$a = 20 >> 2;
,20 的二进制是 10100,右移 2 位后变为 101,即十进制的 5。
- 运用场景:用于快速计算一个数除以 2 的幂次方。例如,
$num >> 4
相当于 $num / 16
,结果会向下取整。