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 中是数学运算。向任何方向移出去的位都被丢弃。左移时右侧以零填充,符号位被移走意味着正负号不被保留。右移时左侧以符号位填充,意味着正负号被保留。
PHP 位运算符
&(按位与)
将 & 两边的数值二进制化进行比较,两边分别 8 位数相互对应,都为 1 则为 1 ,否则为 0 。
例如:1 & 2 ,输出为 0 。
1 的二进制为 00000001
2 的二进制为 00000010
00000000 转为 16 进制是 0
所以 1 & 2 打印就是 0
15 & 8,输出为 8 。
15的二进制为 00001111
8的二进制为 00001000
00001000 转为 16 进制是 8
所以 15 & 8 打印就是 8;
| (按位或)
将 | 两边的数值二进制化进行比较 两边分别8位数相互对应,有1 就为 1 否则为 0 。
例如:1 | 8 ,输出结果是 9 。
1的二进制为 00000001
8的二进制为 00001000
00001001 转为 16 进制是 9
所以 1 | 8 打印就是 9;