?phpdefine("mDELETE",8);define("mUPLOAD",4);define("mWRITE",2);define("mREAD",1);//vvvvvvvvvvvvv使用说明vvvvvvvvvvvvv//部门经理的权限为(假设它拥有此部门的所有权限),| 是位或运行符,不熟悉的就查查资料echo mDELETE|mUPLOAD|mWRITE|mREAD ;// 相当于是把上面的权限值加起来:8+4+2+1=15// 设我只有 upload 和 read 权限,则echo mUPLOAD|mREAD ;//相当于是把上传、只读的权限值分别相加:4+1=5/**赋予它多个权限就分别取得权限值相加,又比如某位员工拥有除了删除外的权限其余都拥有,那它的权限值是多少?*应该是:4+2+1=7*明白了怎么赋值给权限吧?*///^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^//判断某人的权限可用,设权限值在$key中/**判断权限用&位与符,*/$key = 13;//13=8+4+1if($key & mDELETE) echo "有删除权限"; //8if($key & mUPLOAD) echo "有上传权限"; //4if($key & mWRITE) echo "有写权限";//无此权限if($key & mREAD) echo "有读权限"; //1exit;
var_dump(12&13);//输出 int 12//12转换成32位的二进制数为:00000000 00000000 00000000 00001100//13转换成32位的二进制数为:00000000 00000000 00000000 00001101//按位运算后得到的值为 00000000 00000000 00000000 00001100 ,等于12var_dump('A'&'a');//输出string 'A';因为A=65,a=97var_dump('A'&97);//输出int 0;因为字符串A会先转换为整数的0后再参与位运算//3.按位非,按位异或等比较简单,这里不做过多讲叙;现在讲讲按位左移和按位右移动 var_dump(12>>2);//输出int 3 var_dump(12<<2);//输出int 48 //可以发现,左移几位就相当于乘以2的多少次方;按位右移就相当于除以2的多少次方;var_dump(~10);