java 按位运算

比如:发帖权限为3删贴权限为4longpower=3|4;然后我保存到数据库的值就是power;现在已有power的值,怎么判断用户是否有发帖权限... 比如:发帖权限为3 删贴权限为4
long power = 3 | 4; 然后我保存到数据库的值就是power;现在已有power的值,怎么判断用户是否有发帖权限
展开
 我来答
xingyunbuzui
2012-09-26 · TA获得超过1160个赞
知道小有建树答主
回答量:346
采纳率:100%
帮助的人:390万
展开全部
你的这个设计有问题。

位运算来进行逻辑判断,其实就是用数字的二进制各位来做标志。通过位运算,进行权限的组合和拆分。

这样有个基础:就是每个权限的值正好要是二进制位的对应值。
权限可以取的数就是二进制的进度值。如: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,也行,就浪费一个位置。
dw鹤哥
2012-09-26 · 超过14用户采纳过TA的回答
知道答主
回答量:77
采纳率:0%
帮助的人:39.9万
展开全部
“|”这个是按位或运算,3|4即是011|100=111(二进制)即是7,此时power=7.。。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
又歌楠0
2012-09-26
知道答主
回答量:39
采纳率:0%
帮助的人:8.9万
展开全部
我是来做任务的
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式