PHP中位运算的使用场景有哪些

  介绍

这期内容当中小编将会给大家带来有关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中位运算的使用场景有哪些