转载一位牛人
http://blog.csdn.net/treesky/archive/2010/08/15/5812962.aspx
个人非常认同其中的 以2进制的形式进行权限赋值与判断
权限a 为 1
权限b 为 2
权限c 为 4
权限d 为 8
一个人拥有ac两个权限的话 就是 1+4=5,2进制表示就是101
要验证他有没有b的权限就是2&5=0 &按位与 就是 10&101 =000这就表明他没有b的权限
要验证他有没有c的权限就是4&5=4 100&101=100 这就表明他有c的权限
&按位与,|按位或,^按位异或,我们其实可以把1当成true,0当成false这样 1|0=1 1^0=1 1&0=0了和逻辑与一样的其实。
这是非常好的权限设计,当要增加新的权限时只需要增加新的2的几次方就行了.扩展很方便。
权限判断也很方便
所需权限&用户权限=所需权限 才能通过验证.