&位与运算符|位或运算符之权限控制算法

Posted $("#阿飞")

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了&位与运算符|位或运算符之权限控制算法相关的知识,希望对你有一定的参考价值。

【&】位与运算符:

按位与运算符"&"是双目运算符。 其功能是参与运算的两数各对应的二进位相与。只有对应的两个二进位均为1时,结果位才为1 ,否则为0。参与运算的数以补码方式出现。

如:

00001001
&
00000101
=
00000001

 

【|】位或运算符:

按位或运算符“|”是双目运算符。 其功能是参与运算的两数各对应的二进位相或。只要对应的二个二进位有一个为1时,结果位就为1。参与运算的两个数均以补码出现。

00001001
|
00000101
=
00001101
 
获取用户权限时,使用【|】运算符得到用户权限值,比较用户权限时使用【&】运算符比较用户是否拥有摸个权限。
如:
用户A拥有权限:
权限ID 权限值 权限名称
1 1 查询
2 2 新增
3 4 删除
4 8 更新
权限值=2^(权限ID-1)
用户A的权限值=1|2|4|8=15
  0001
 |0010
 |0100
 |1000
=1111
 
判断用户是否拥有删除权限 15&4!=0
运算结果
  1111
&0100
=0100
 
0100=4不等于0,表示有权限。
 
若用户权限值=用户A的权限值=1|2|8=11
  0001
 |0010
 |1000
=1011
 
 
判断用户是否拥有删除权限 11&4!=0
运算结果
  1011
&0100
=0000
 
0000=0等于0,表示没有权限。
 
查询权限直接判断用户A的权限值==0
 
这样只要用户拥有任何权限都可以查询单据。
 
 
 

以上是关于&位与运算符|位或运算符之权限控制算法的主要内容,如果未能解决你的问题,请参考以下文章

位运算(按位与按位或异或)

按位与&按位或|按位异或^

位与&, 位或| ,位异或 ^ 总结

位运算符按位与按位或按位非左移右移原码反码补码

按位与按位或按位异或等等(& | ^ ~ >> <<)

按位与,按位或,按位异或,按位取反