位与运算在权限管理中的应用

来源:互联网 发布:手机全景拍照软件 编辑:程序博客网 时间:2024/06/06 00:58

     前不久,在设计个性化定制预警消息功能时,通过位与运算方法实现了该功能,现同大家一块分享。

     预警系统需提供设定什么时间为工作日,工作日设置,采用简单的按星期设置方式,用户可设定在每周的某几天为工作日,在工作日和非工作日可分别设置其接受预警消息的方式,如:短信/邮件。如果用户除周六、日为假日,我们将对应的工作日位标识为“1”,非工作日标识为“0”,如:

    sun mon tue thr wed fri sat   二进制   十进制

     0   1   1   1   1   1   0    0111110    62

    

即:用户具有的总权限 = 2^0 + 2^1 + 2^2 + 2^3 + 2^4 + 2^5 + 2^0 = 62  同理,也可以用位标识方法对工作日、非工作日预警方式进行标识。

通过位与运算,我们可以很简单实现权限判断,如下方法:

    /**
     * 实现,单操作权限判断
     * @param userPurview 用户具有的总权限
     * @param optPurview 权限位

     * @return 权限校验,有权限返回true,反之false
     */

    public static boolean checkPower(int userPurview, int optPurview){
        int purviewValue = (int)Math.pow(2, optPurview);
        return (userPurview & purviewValue) == purviewValue;
    }
如:判断是否周一为工作日,则: checkPower(62,1)为true,通过该方式实现权限判断,是不是很方便,根据此原理,在工作日和非工作日接受预警消息的方式同样实现起来非常简单。

 

 

 

 

 

 

原创粉丝点击