1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
| 案例1: 如何用 一个字段管理4个权限: 权限1、权限2、权限3、权限4
解决方案: 用一个二进制数来表达权限 二进制位为1时表示有权限 0无权限 将有权限1定义为 0b0001 将有权限2定义为 0b0010 将有权限3定义为 0b0100 将有权限4定义为 0b1000
综上: 若一个用户拥有权限1234, 则表达为 0b1111
1: 赋权(|: 或运算 两者有1时为1) role = 0b0010 //用户权限 role = role | 0b0001 //赋予用户权限1 -> role = 0b0011 role = role | 0b1000 //赋予用户权限4 -> role = 0b1011
2: 去权(^: 异或运算 两者不同时为1) role = 0b1011 //用户权限 role = role ^ 0b0010 //移去用户权限2 -> role = 0b1001 role = role ^ 0b1000 //移去用户权限4 -> role = 0b0001
3: 判权(&: 与运算 两者为1时为1) role = 0b1011 //用户权限 role & 0b0001 > 0 //有权限1 role & 0b0010 > 0 //有权限2 role & 0b0100 = 0 //无权限3 role & 0b1000 > 0 //有权限4
|