【&】位与运算符:
按位与运算符"&"是双目运算符。 其功能是参与运算的两数各对应的二进位相与。只有对应的两个二进位均为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
这样只要用户拥有任何权限都可以查询单据。
时间: 2024-10-07 11:31:45