Java位运算判断权限

位运算:

& 与运算:都为1时才为1
| 或运算:都为0时才为0
^ 异或运算: 相同为0,不同为1

场景应用:二进制进行权限判断
假设有四种权限:
int add = 1; //对应二进制为...0001
int query = 2;//对应二进制为...0010
int update = 4;//对应二进制为...0100
int delete = 8;//对应二进制为...1000
对于上面得四种权限,我们用二进制表示,可以发现1在不同的位置,当一个用户权限的二进制为...1111时,即拥有四种权限,那么如何运用呢?
1、我们想给userA用户所有权限:(按位或运算)
int userA = add | query | update | delete;

2、现在从数据库查询出来用户权限值为userB,如何知道他是否拥有删除权限呢?,伪代码如下,通过按位与运算?

if (userB & delete == delete) {
     System.out.println("用户delete权限");
} else {
     System.out.println("无删除权限");
}

3、如何取消用户delete权限,可通过按位取反运算
 userC = userC & (~delete);
 


版权声明:本文为qq_40693828原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。