0

php基础运算符

位运算符

例子 名称 结果
-$成绩 取反 $成绩的负值
$a & $b And(按位与) 将把 $a 和 $b 中都为 1 的位设为 1。
$a $b Or(按位或) 将把 $a 和 $b 中任何一个为 1 的位设为 1。
$a ^ $b Xor(按位异或) 将把 $a 和 $b 中一个为 1 另一个为 0 的位设为 1。
~ $a Not(按位取反) 将 $a 中为 0 的位设为 1,反之亦然。
$a << $b Shift left(左移) 将 $a 中的位向左移动 $b 次(每一次移动都表示“乘以 2”)。
$a >> $b Shift right(右移) 将 $a 中的位向右移动 $b 次(每一次移动都表示“除以 2”)。

位移在 PHP 中是数学运算。向任何方向移出去的位都被丢弃。左移时右侧以零填充,符号位被移走意味着正负号不被保留。右移时左侧以符号位填充,意味着正负号被保留。

要用括号确保想要的优先级。例如 $a & $b == true 先进行比较再进行按位与;而 ($a & $b) == true 则先进行按位与再进行比较。

要注意数据类型的转换。如果左右参数都是字符串,则位运算符将对字符的 ASCII 值进行操作。

<?php
    echo (1 & 2)."\n";           // prints 0
    echo (1 | 2)."\n";           // prints 3
    echo (1 ^ 2)."\n";           // prints 3
    echo (1 << 2)."\n";           // prints 4
?>

echo (1 & 2)."\n";           // prints 0
echo (1 | 2)."\n";           // prints 3
echo (1 ^ 2)."\n";           // prints 3
echo (1 << 2)."\n";          // prints 4

holyzhang