符号 | 名称 | 说明 (转移完成后是二进制数) | 示例 | 总结 |
<< | 左移 | 把左边的数 向左移动两位 以0补全 | 1<<0 等同于 1 等于 1 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)