PHP:按位运算

在 PHP 中,按位运算用于对整数类型的数进行逐位操作。

一、按位与(&)

按位与运算符对两个操作数的每一位进行逻辑与操作。只有当两个相应的位都为 1 时,结果位才为 1,否则为 0。

$a = 5; // 二进制表示为 0101

$b = 3; // 二进制表示为 0011

$result = $a & $b;

echo $result; // 输出 1,因为 0101 & 0011 = 0001

二、按位或(|)

按位或运算符对两个操作数的每一位进行逻辑或操作。只要两个相应的位中有一个为 1,结果位就为 1。

$a = 5; // 二进制表示为 0101

$b = 3; // 二进制表示为 0011

$result = $a | $b;

echo $result; // 输出 7,因为 0101 | 0011 = 0111

三、按位异或(^)

按位异或运算符对两个操作数的每一位进行逻辑异或操作。当两个相应的位不同时,结果位为 1,否则为 0。

$a = 5; // 二进制表示为 0101

$b = 3; // 二进制表示为 0011

$result = $a ^ $b;

echo $result; // 输出 6,因为 0101 ^ 0011 = 0110

四、按位取反(~)

按位取反运算符对操作数的每一位进行取反操作,即将 0 变为 1,将 1 变为 0。

$a = 5; // 二进制表示为 0101

$result = ~$a;

echo $result; // 输出 -6,因为对 0101 取反得到 1010,在计算机中以补码形式存储,即为 -6。

五、左移(<<)

左移运算符将操作数的二进制表示向左移动指定的位数,右边用 0 填充。

$a = 5; // 二进制表示为 0101

$result = $a << 2;

echo $result; // 输出 20,因为 0101 左移两位得到 10100,即十进制的 20。

六、右移(>>)

右移运算符将操作数的二进制表示向右移动指定的位数,左边根据操作数的符号位进行填充(正数用 0 填充,负数用 1 填充)。

$a = 5; // 二进制表示为 0101

$result = $a >> 1;

echo $result; // 输出 2,因为 0101 右移一位得到 0010,即十进制的 2。

按位运算在某些特定的编程场景中非常有用,比如位标志的设置和检查、优化某些算法等。但在使用时需要注意操作数的类型和范围,以确保得到正确的结果。

PHP编程语言基础