如果您无法下载资料,请参考说明:
1、部分资料下载需要金币,请确保您的账户上有足够的金币
2、已购买过的文档,再次下载不重复扣费
3、资料包下载后请先用软件解压,在使用对应软件打开
在工作中遇到按位或组合权限串。一直不是特别明白。今天终于花了半个下午的时间搞明白其中的道理。首先每一个权限数都是2的N次方数如:k1=2;//添加k2=4;//删除k3=8;//修改...如此定义功能权限数,当需要组合权限时,就需要对各个所拥有的权限数按位或了。如:purview=k2|k3;//赋给添加和删除权限当需要判断在权限串中是否拥有某一权限时,就需要进行按位与。如:if((purview&k1)>0)//判断此权限串是否拥有添加权限,结果>0则进入if语句代码块中{....}说到这里肯定会有疑问了,别急我来细细讲解。第一,2的8位二进制值为000000104的8位二进制值为000001008的8位二进制值为00001000第二,当对8和4进行按位或操作后,结果为:4|8=1200000100|00001000=00001100为什么会是这样呢?在进行按位或操作时00000001|00000001=00000001;00000001|00000000=1;00000000|00000000=00000000也就是说除了0|0结果是0外,其它运算结果的都是1所以00000100|00001000=00001100也就说上面的purview=k2|k3的二进制值结果是purview=00000100|00001000=00001100了第三,当对8和4进行按位与操作后,结果为:4&8=000000100&00001000=00000000同样为什么会是这样呢?在进行按位与操作时00000001&00000001=00000001;00000001&00000000=00000000;00000000&00000000=00000000也就是说除了1&1结果是1外,其它运算结果的都是0所以00000100&00001000=00000000上面的if((purview&k1)>0)的结果就是00001100&00000010=00000000也就是(0>0)=false同样if((purview&k2)>0)的结果就是00001100&00000100=00000100=4=k2也就是(4>0)=true这样我们就理解组合权限串和判断权限的原理了,说白了就是对2N次方数的按位与和按位或。