二进制位运算经典应用例子,记录用户的各种权限。
用整形数字存储权限,用位运算进行权限的添加、删除、验证操作。具体代码实现如下:
/**
* 二进制位运算实现权限组合控制
*/
public class Permission {
private static final int READ = 0b1; //0001 表示有读权限
private static final int WRITE = 0b10; //0010 表示有写权限
private static final int UPDATE = 0b100; //0100 表示有更新权限
private static final int DELETE = 0b1000; //1000 表示有删除权限
//有更多的权限,按上面规律添加。
private static final int MAX_INT = 0b10000000000000000000000000000000;//有32位,可以表示32种权限
private static final int READ_WRITE = READ | WRITE | UPDATE; //0111 表示有读、写、更新权限
public static void main(String[] args) {
System.out.println(Integer.toBinaryString( READ_WRITE));
int p=READ | UPDATE; //0101 有读和更新权限
System.out.println(Integer.toBinaryString( p));
//权限操作
//用二进制与运算 判断是否有对应权限 0101 & 0010 =0000
if((p & WRITE)>0){
System.out.println("有写权限");
}else {
System.out.println("没有写权限");
}
//用二进制或运算 添加权限 0101 | 1000 =1101
int p1=p | DELETE;
if((p1 & DELETE)>0){
System.out.println("有删除权限");
}else {
System.out.println("没有删除权限");
}
//用二进制异或运算 删除权限 0101 ^ 0100 =0001
int p2=p ^ UPDATE;
if((p2 & UPDATE)>0){
System.out.println("有更新权限");
}else {
System.out.println("没有更新权限");
}
}
}