符号名称说明 (转移完成后是二进制数)示例总结
<
1<<1 等同于 10 等于 2
1<<2 等同于 100 等于 4
1<<3 等同于 1000 等于 8-
|按位或两个数有一个是1 就等于1 不进位加法3|2 换成二进制 11 | 10 =11 等于3多位二进制也是一样,遵循规则,
11 和 10 ,我们转换成十进制来说
十位上都一样,是1 ,个位是只要有一个数是 1 就是1 ,则 等到11 ,11换算成二进制就是3
&按位与只有两个数都为1时 等于1 不进位加法3&2 换成二进制 11 & 10 =10 等于2
^按位异或两个数不相等则等于1 ,相等则等于0
~取反
>>右移a>>b 把十进制数转成二进制数后,去掉 右边 b位8>>2 去掉右边2位 得到 2 8的二进制数1000
10>>2 去掉右边2位 得到 2 8的二进制数1010 去掉后边2位 得到 2
20>>2 =5 剩下二进制 101 转成十进制 5
20>>3 =2
用途:
使用上面介绍的运算符可以很轻松地实现权限管理//定义权限$create = 1;
$update = 2;
$read = 4;
$delete = 8;
$all = $create | $update | $read | $delete;//定义用户组权限$admin = $all; //管理员拥有所有权限$guest = $create | $read; //访客只有添加和读权限$user = $all & ~$delete; //用户拥有除了删除以外的所有权限//判断某个组是否拥有某个权限var_dump($user & $update, $user & $delete, $guest & $update);#=>int(2) int(0) int(0)