后端开发|php教程
使用技巧,php,不知道,运算符,总结
后端开发-php教程
权限管理办法是一个普遍采用的方法,主要是使用到”位运行符”操作,& 位与运算符、| 位或运行符。参与运算的如果是10进制数,则会被转换至2进制数参与运算,然后计算结果会再转换为10进制数输出。
饿了么源码,n2810 ubuntu,爬虫逆向是什么,Php红灯,SEO与IPOlzw
它的权限值是这样的:
驾校模拟考试源码,提升ubuntu 源速度,tomcat的运行日志,蜘蛛爬虫排行,php编写hello world程序,seo低迷lzw
2^0=1,相应2进数为”0001″(在这里^我表示成”次方”,即:2的0次方,下同)
水果销售网站源码,ubuntu里面的分区,绿色tomcat7安装版,爬虫入职要求,php包含中文字符串,做个网页seolzw
2^1=2,相应2进数为”0010″
2^2=4,相应2进数为”0100″
2^3=8,相应2进数为”1000″
要判断一个数在某些数范围内就可以使用 & 运算符(数值从上面的表中得来)
如:7=4|2|1(你也可以简单理解成7=4+2+1)
用 & 来操作,可以知道7&4、7&2、7&1都是真的,而如果7&8则是假的
&、|不熟悉的就要去查查手册,看看是怎么用的了
实例说明:
删除:8、上传:4、写入:2、只读:1define(“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 “有上传权限“; //4$a=$key & mWRITE; echo “有写权限“.$a; //无此权限if($key & mREAD) echo “有读权限“; //1?>
OK,权限分值的这其中一个算法就是这样的,可以说是简单高效。也不知大家明白没有,不明白也没关系,记住例子就行了。前提就是做好权限值的分布,即那个1、2、4、8、16….(这里还有个顺序问题,越高级的权限就要越高的权限值,比如上面的例子所演示的删除权限)。有了权限分布表就可以确定给某个人什么权限了,你简单的理解成要哪个权限就加上相应的权限值吧。
这个方法很好用的,缺点就是如果权限分布得细的话,那么权限值会越来越大,你自己想想,2的几次方、如果所有的权限都要则是全部相加。不过对于一般的权限来说这个已经足够了。
位运算技巧
1.获取INT型最大值和最小值
最大值:
~(1 << 31)最小值:(1 << 31)2.乘以2运算和除以2运算
乘以2:
$n <> 1
3.乘以2的m次方和除以2的m次方
乘以2的m次方:
$n <> $m
4.判断一个整数的奇偶性
($n & 1) == 1
5.不用临时变量交换两个数
$a ^= $b;
$b ^= $a;
$a ^= $b;
6.从低位到高位,取n的第m位
return ($n >> ($m-1)) & 1;
7.从低位到高位.将n的第m位置1
return $n | (1 << ($m-1));8.从低位到高位,将n的第m位置0return $n & ~(1 << ($m-1));