看到 位运算 设计权限时候 都是  1 2 4 8 16 ....2N次方
为什么要这样  不可以 1 2 3 4 5 这样子  谁能详细点告诉我,刚刚了解位运算

解决方案 »

  1.   

    我认为纯粹是一种习惯或者节省空间,因为位运算本来就针对的是二进制的数字
    比如bit存的是非0即1 也就是1位 byte是8位 也就是一个字节 16位就是2个字节 32位就是4个字节
      

  2.   

    将位运算 设计权限时候的1 2 4 8 16 ....这些值,化为二进制表示,对应位是1,表示该位有权限,对应位是0,表示没有权限。
    正如二楼所说:1 2 4 8 16 ....2N每个权限对应一个二进制位,叠加很简单啊,3表示有1,2的权限。参考:http://www.cnblogs.com/sycdirdir/archive/2010/06/01/1748891.html 
    SqlServer位运算 权限设计 
    *用2的n次方标识单个的权限 如 0 无权限
    1 可读(read)
    2 可新增(insert)
    4 可修改(update)
    8 可删除(delete)
    16 可审核
    ...
    权限的组合read +insert = 1+2=3 
    read +insert +delete = 1+2+8=11
    read + update+delete =1+4+8=13
    (value = 2的n次方)
    增加权限
    power = power | value删除权限
    power = power &~ valuebtw:  可以一次增加或删除多个权限的组合
    power = power | 13   同时增加 read + update+delete
    power = power &~ 3   同时删除 read + insert
    判断权限
    可以同时判断单个权限,也可以同时判断多个组合权限power & value = value  */