这期内容当中小编将会给大家带来有关PHP中位运算的使用场景有哪些,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。
<强>它的权限值是这样的强>
2 ^ 0=1,相应2进数为“0001”(在这里^我表示成“次方”,即:2的0次方,下同)
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只读:1 定义(“mDELETE”, 8); 定义(“mUPLOAD”, 4); 定义(“mWRITE”, 2); 定义(“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 =, 13;//13=8 + 4 + 1 如果(key 美元;,,mDELETE), echo “有删除权限 ";//8 如果(key 美元;,,mUPLOAD), echo “有上传权限 ";//4 $=$ key ,, mWRITE;, echo “有写权限 ”。一个美元;,//无此权限 如果(key 美元;,,mREAD), echo “有读权限 ";//1 ?在
好的,权限分值的这其中一个算法就是这样的,可以说是简单高效。也不知大家明白没有,不明白也没关系,记住例子就行了。前提就是做好权限值的分布,即那个1、2、4、8、16…。(这里还有个顺序问题,越高级的权限就要越高的权限值,比如上面的例子所演示的删除权限)。有了权限分布表就可以确定给某个人什么权限了,你简单的理解成要哪个权限就加上相应的权限值吧。
这个方法很好用的,缺点就是如果权限分布得细的话,那么权限值会越来越大,你自己想想,2的几次方,如果所有的权限都要则是全部相加。不过对于一般的权限来说这个已经足够了。
<强>下面是些简单应用举例强>
<强>(1)判断int型变量一个是奇数还是偶数强>
第一部,1=0偶数
第一部,1=1奇数
<强>(2)取int型变量一的第k位(k=0、1、2……sizeof (int)),即a>祝辞k& 1 强>
<强>(3)将int型变量一的第k位清0,即=第一部,~ (1 & lt; 强>
& lt;在
<>强(4)将int型变量一的第k位置1,即=| (1 & lt; 强>
& lt;在
<强> (5)int型变量循环左移k次,即=a<在16 k(设sizeof (int)=16) 强>
<强> (6)int型变量一个循环右移k次,即=a>在k | a<& lt; 16 k(设sizeof (int)=16) 强>
<强>(7)整数的平均值强>
对于两个整数x, y,如果用(x + y)/2求平均值,会产生溢出,因为x + y可能会大于INT_MAX,但是我们知道它们的平均值是肯定不会溢出的,我们用如下算法:
int 平均(x, int int y),//返回x, Y 的平均值 {, return (x& y) + (, (x ^ y)比的在1); }
<>强(8)判断一个整数是不是2的幂,对于一个数x祝辞=0,判断他是不是2的幂强>
boolean power2 (int x) { return ((x& (x - 1))==0),和(x !=0); }
<>强(9)不用临时交换两个整数强>
void 交换(int x ,, int y) { x ^=, y; y ^=, x; x ^=, y; }
<>强(10)计算绝对值强>
int abs (, int x ) { int y ; ,时间=y x 的在祝辞,31,; return (x ^ y) -y ,,//或:(x + y) ^ y }PHP中位运算的使用场景有哪些