利用按位运算符轻松管理权限

运算符

按位与

只有两个数都为1时等于1

0 & 0 = 0;
0 & 1 = 0;
1 & 0 = 0;
1 & 1 = 1;

按位或

两个数其中一个是1等于1

0 | 0 = 0;
0 | 1 = 1;
1 | 0 = 1;
1 | 1 = 1;

按位异或

两个数不同时等于1,相同则置位0

0 ^ 0 = 0;
0 | 1 = 1;
1 | 0 = 1;
1 | 1 = 0;

取反

两个数不同时等于1,相同则置位0

~0 = 1;
~1 = 0;

用途

使用上面介绍的运算符可以很轻松地实现权限管理

<?php
//定义权限
$create = 1;
$update = 2;
$read = 4;
$delete = 8;
$all = $create | $update | $read | $delete;

//定义用户组权限
$admin = $all; //管理员拥有所有权限
$guest = $create | $read; //访客只有添加和读权限
$user = $all & ~$delete; //用户拥有除了删除以外的所有权限

//判断某个组是否拥有某个权限
var_dump($user & $update, $user & $delete, $guest & $update);
#=>int(2) int(0) int(0)

原文地址:https://www.cnblogs.com/justlikeheaven/p/8157272.html

时间: 2024-11-11 07:36:59

利用按位运算符轻松管理权限的相关文章

Java功底篇系列-03-一些位运算符你会如何理解?

话题一:异或 先看一段代码吧: 这段代码是用来实现a,b交换的. 异或是位运算符,0^1为1,其他情况都是0,这是一个加法不进位的功能! 这有什么用呢? 其实通过上面交换的例子,我们已经明白A^B^A将得到B,也就是可以实现数据还原的功能! 话题二:%与& 如果有一堆数据,我们想将这些数据通过HASH的方式,放入到桶中. 我们可以将桶进行编号,比如0号,1号,...N号桶. 给我们一个数据,我们要完成这个数据和桶的序号的映射转化关系,这样放入和查找就可以了. 由于对于任何一个非负数A,进行A%B

用户和组管理权限及文件访问控制

与用户账户和组帐户相关的文件: 1./etc/passwd 2./etc/group 3./etc/shadow 4./etc/gshadow 5./etc/default/useradd 6./etc/login.defs 7./etc/skel(Directory) 1./etc/passwd: root:x:0:0:root:/root:/bin/bash 1  2 3 4  5   6    7 1:用户账户登录名称: 2:使用"x"表示密码占位符: 3:用户账户的UID: 4

32位机内存管理机制(上)

一直有看linux内核的冲动,内核有些部分是汇编编写的,无奈汇编不大懂,所以利用五一三天假期大概走了一边8086CPU架构的汇编,8086CPU还是16位的,我们现在都进入64位时代了,这两者之间有很大的区别,但是看看16位的CPU汇编还是很重要的,这有助于理解32位的80386CPU.这篇文章来分析下80386的内存管理的一些基础知识,包括实模式.保护模式和内存寻址等等. 1.实模式 处理器被复位或者加电的时候以实模式启动.这时候处理器中各寄存器以实模式的初始化值工作. 80386处理器在实模

JAVA-初步认识-第三章-位运算符

一. 位运算符 这里的位是指二进制位,bit位运算的符号. 观看ppt可知,位运算符不止一个,是由多个运算符组成,甚至使用了之前定义过的运算符号. 二. 对不同的位运算符进行分析 a. &除了参与与运算外,还参与位运算,具体的位运算过程:6&3,一定要记得位运算是对二进制位进行计算,6的有效二进制位是110,而3的有效二进制位是011.&被运用到位运算中,仍然具备与运算的功能.对相同位置的二进制数进行逻辑运算,0代表着false,1代表着true.110&010=010,转

javascript运算符——位运算符

× 目录 [1]二进制 [2]非 [3]与[4]或[5]异或[6]左移[7]右移[8]>>>[9]应用 前面的话 位运算符是非常底层的运算,由于其很不直观,所以并不常用.但是,其速度极快,且合理使用能达到很好的效果.本文将介绍javascript中常常被忽视的运算符——位运算符 二进制表示 ECMAScript中的所有数值都以IEEE-754 64位格式存储,但位操作符并不直接操作64位的值,而是以32位带符号的整数进行运算的,并且返回值也是一个32位带符号的整数 这种位数转换使得在对特

利用基于@AspectJ的AOP实现权限控制

一. AOP与@AspectJ AOP 是 Aspect Oriented Programming 的缩写,意思是面向方面的编程.我们在系统开发中可以提取出很多共性的东西作为一个 Aspect,可以理解为在系统中,我们需要很多次重复实现的功能.比如计算某个方法运行了多少毫秒,判断用户是不是具有访问权限,用户是否已登录,数据的事务处理,日志记录等等. AOP的术语 连接点(Joinpoint) 程序执行的某个特殊位置:比如类开始初始化前,类初始化后,某个方法调用前,调用后等. 连接点 可 以 理解

linux 管理权限

linux 管理权限 linux 文件 权限 1.使用 ls -l 命令 执行结果如下(/var/log) : drwxr-x--- 2 root adm 4096 2013-08-07 11:03 apache2 drwxr-xr-x 2 root root 4096 2013-08-07 09:43 apparmor   drwxr-xr-x 2 root root 4096 2013-08-07 09:44 apt   -rw-r----- 1 syslog adm 16802 2013-

位运算符规律小结

1,异或运算^ 1)0和任何数异或都得到原来的数 2)两个相同的数字异或得0.利用该性质常用来寻找数称对出现时缺失的某一个数 异或运算可以用来 1)判断一个数字是否是偶数(二进制表示中只有一位是0,n^(n-1)=0) 2)寻找缺失的数字,如0-n中缺失的数字 3)不使用第三方变量交换两个变量的值 4)使用位运算来实现常见的运算符,如两个数相加,计算两个数字的平均值等(蒋&和^,以及移位结合起来考虑)) 5)计算一个数值的二进制中包含1的个数(p70) 6)将一个整数的奇偶位互换 ((x&

云计算:利用叶子云桌面虚拟化管理平台搭建企业的桌面云,叶子云安装(二)

云计算:利用叶子云桌面虚拟化管理平台搭建企业的桌面云,叶子云安装(二) --企业轻松搭建kvm桌面云系列教程 一,安装准备 1.先下载叶子云的安装光盘文件,光盘文件是iso格式的. 2.如果你用虚拟机安装,则不用刻录光盘,如果你是用物理机安装,则应该刻录成光盘. 3.光盘文件可到下方的qq群下载. 二,安装演示 安装演示分为2种情况,1种是在虚拟机内进行安装演示,另一种是在物理服务器上进行演示. A.虚拟机安装叶子云虚拟化 1.创建一个虚拟机(会的建议跳过) 我们这里以 VMware演示如何安装