//位运算符
$a &= $b $a = $a & $b
$a |= $b $a = $a | $b
$a ^= $b $a = $a ^ $b
$a <<= $b $a = $a << $b
$a >>= $b $a = $a >> $b
各位运算符的解释
例子 名称 结果
$a & $b And(按位与) 将把 $a 和 $b 中都为 1 的位设为 1。
$a | $b Or(按位或) 将把 $a 或者 $b 中为 1 的位设为 1。
$a ^ $b or(按位异或) 将把 $a 和 $b 中不同的位设为 1。
~ $a Not(按位非) 将 $a 中为 0 的位设为 1,反之亦然。
$a << $b Shift left(左移) 将 $a 中的位向左移动 $b 次(每一次移动都表示“乘以 2”)。
$a >> $b Shift right(右移) 将 $a 中的位向右移动 $b 次(每一次移动都表示“除以 2”)。
以上运算中,可能位运算有点较难于理解,当然这需要你有十进制转成二进制的基本知识才行。不然理解起来确实有点难度。
EG:
$mark_1 = 3;
$mark_2 = 8;
$mark_2 ^=$mark_1;
echo $mark_2;
结果: 这将输出“11”,此时$mark_2的类型仍为整型.
分析: 1 首先我把 3 与 8 都转为二进制如下(怎么转,自己学习哈哟 ^_^,我这里就不写了) :
十进制 -> 二进制 -> 十进制
3 -> 0011
8 -> 1000
按位运算后: 1011 -> 11
2 即:3与8转为二进制后,它们每一位上的二进制值都相比较,如果不相同就设
置为'1',相同为0,所以运算后的二进制结果为'1011',(另注:1100为12)而这就是十进制就的11了。
3 OK? ^_^(其它位运算类比)