java 按位运算
比如:发帖权限为3删贴权限为4longpower=3|4;然后我保存到数据库的值就是power;现在已有power的值,怎么判断用户是否有发帖权限...
比如:发帖权限为3 删贴权限为4
long power = 3 | 4; 然后我保存到数据库的值就是power;现在已有power的值,怎么判断用户是否有发帖权限 展开
long power = 3 | 4; 然后我保存到数据库的值就是power;现在已有power的值,怎么判断用户是否有发帖权限 展开
展开全部
你的这个设计有问题。
位运算来进行逻辑判断,其实就是用数字的二进制各位来做标志。通过位运算,进行权限的组合和拆分。
这样有个基础:就是每个权限的值正好要是二进制位的对应值。
权限可以取的数就是二进制的进度值。如:1,2,4,8,16,32……(不超过数字表达范围)。
看你的题目: 3是发帖,4是删帖。要用二进制来做掩码计算。设计不科学。
两个方法:
1 建议使用1,2,4,8……来定义的你的权限。
如果改成:4是发帖,8是删帖
long power=4|8;
判断是否有发帖权限:power&4 >0
2 如果一定要用1,2,3,4来定义,那么要做进制操作。
long power=(1<<(3-1))|(1<<(4-1));
判断是否有发帖权限:(power&(1<<(3-1))) > 0
注:如果上面都不减去1,也行,就浪费一个位置。
位运算来进行逻辑判断,其实就是用数字的二进制各位来做标志。通过位运算,进行权限的组合和拆分。
这样有个基础:就是每个权限的值正好要是二进制位的对应值。
权限可以取的数就是二进制的进度值。如:1,2,4,8,16,32……(不超过数字表达范围)。
看你的题目: 3是发帖,4是删帖。要用二进制来做掩码计算。设计不科学。
两个方法:
1 建议使用1,2,4,8……来定义的你的权限。
如果改成:4是发帖,8是删帖
long power=4|8;
判断是否有发帖权限:power&4 >0
2 如果一定要用1,2,3,4来定义,那么要做进制操作。
long power=(1<<(3-1))|(1<<(4-1));
判断是否有发帖权限:(power&(1<<(3-1))) > 0
注:如果上面都不减去1,也行,就浪费一个位置。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询