大家玩Linux的时候应该知道读1写2执行4,其实这样的数据都是因为位运算
比如:在网站中经常使用的权限控制(增删改的权限)[很多大公司都是使用这个]
使用三位表示增删改,对应关系如图
0 | 0 | 0 | 0 |
---|---|---|---|
0 | 0 | 1 | 1 |
0 | 1 | 0 | 2 |
0 | 1 | 1 | 3 |
1 | 0 | 0 | 4 |
1 | 0 | 1 | 5 |
1 | 1 | 0 | 6 |
1 | 1 | 1 | 7 |
这个列表大家能看明白吧?
也就是最高位标识是否拥有增的权限,中间一位标识是否拥有删的权限,第三栏标识是否用改的权限,第四栏标识的是前面三位的十进制表达
数据库存储的是十进制数,在使用的时候需要转换成二进制(我这里使用PHP来表示)
默认是0,这样我们需要授权的时候只用使用“|”来授权
//定义权限
define(‘UPD’, 1<< 0); // 把更新权限放在最右边
define(‘DELE’, 1<<1); // 删除权限向左移一位
define(‘ADD’, 1<<2); // 增加权限向左移两位
授权
$is = UPD | ADD;//更新和增加的权限十进制是5,二进制是101
如果需要判断是否拥有这样的权限
$is & UPD (101 & 001 )
如果需要取消授权那么可以使用异或^来移除权限