【&】位与运算符【|】位或运算符之权限控制算法

【&】位与运算符:

按位与运算符"&"是双目运算符。 其功能是参与运算的两数各对应的二进位相与。只有对应的两个二进位均为1时,结果位才为1 ,否则为0。参与运算的数以补码方式出现。

如:

00001001

&

00000101

=

00000001

【|】位或运算符:

按位或运算符“|”是双目运算符。 其功能是参与运算的两数各对应的二进位相或。只要对应的二个二进位有一个为1时,结果位就为1。参与运算的两个数均以补码出现。

00001001

|

00000101

=

00001101

获取用户权限时,使用【|】运算符得到用户权限值,比较用户权限时使用【&】运算符比较用户是否拥有摸个权限。

如:

用户A拥有权限:

权限ID 权限值 权限名称
1 1 查询
2 2 新增
3 4 删除
4 8 更新

权限值=2^(权限ID-1)

用户A的权限值=1|2|4|8=15

0001

|0010

|0100

|1000

=1111

判断用户是否拥有删除权限 15&4!=0

运算结果

1111

&0100

=0100

0100=4不等于0,表示有权限。

若用户权限值=用户A的权限值=1|2|8=11

0001

|0010

|1000

=1011

判断用户是否拥有删除权限 11&4!=0

运算结果

1011

&0100

=0000

0000=0等于0,表示没有权限。

查询权限直接判断用户A的权限值==0

这样只要用户拥有任何权限都可以查询单据。

时间: 2024-10-07 11:31:45

【&】位与运算符【|】位或运算符之权限控制算法的相关文章

php使用位与运算符【&】位或运算符【|】实现权限管理

权限值是这样的2^0=1,相应2进数为”0001″(在这里^我表示成”次方”,即:2的0次方,下同)2^1=2,相应2进数为”0010″2^2=4,相应2进数为”0100″2^3=8,相应2进数为”1000″ 要判断一个数在某些数范围内就可以使用 & 运算符(数值从上面的表中得来)如:7=4|2|1 (你也可以简单理解成7=4+2+1)用 & 来操作,可以知道7&4.7&2.7&1都是真的,而如果7&8则是假的 例子:<?php// 定义权限defin

PHP中的运算符---位运算符、递增递减运算符、三元运算符、字符串运算符、数组运算符、类型运算符、错误控制运算符

1.位运算符 位运算符用来对整型数的指定位进行置位,如果被操作数是字符串,则对该字符串的ASCII码值进行操作. 运算类型 运算符 举例 结果 按位与 & $a & $b 将$a 与 $b 中均为1的位置为1,其余置为0 按位或 | $a | $b 将$a 中为1 或$b中为1的位置为1,其余置为0 按位异或 ^ $a ^ $b 将$a 与 $b 中不同的位置为1,其余置为0 按位非 ~ ~ $a 将 $a 中为1的位置为0,为0的位置为1 左移 << $a <<

Java中逻辑与,逻辑或,按位与,按位或的区分

一直以来,对这样的概念很是模糊,今天总结了一下 先说说逻辑与(&&),逻辑或(||) 他们是短路形式的,举例说明 int i = 0;    System.out.println ( i++ == 1 && i++ == 2);//打印false    System.out.println (i);//打印1 //这里先判断i++是否等于1,因为是右自增,所以这里i++ == 1是错误的,短路就是说不用执行后面的i++ == 2了,   直接返回一个false,所以这就是最

javascript运算符——位运算符

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

Python核心编程基础教程之Python运算符、运算符优先级、表达式简介--20150717

Python核心编程基础教程之Python运算符.运算符优先级.表达式简介 1.Python运算符与表达式: (1)认识Pyhton运算符1:什么是运算符 在Python运算中,有时候我们需要对一个或者多个数字或者一个或者多个字符串进行运算操作,*,+ (2)认识Pyhton运算符2:运算符有哪些以及运算符的使用方法 + :加 - :减 * :乘 / :除 ** :幂 < :小于 > :大于 != :不等于 // :求相除的整数部分 % :求相除的余数部分 & :按位与 | :按位或

Python 运算符优先级 运算符

Python 运算符优先级 运算符 描述lambda Lambda表达式or 布尔"或"and 布尔"与"not x 布尔"非"in,not in 成员测试is,is not 同一性测试<,<=,>,>=,!=,== 比较| 按位或^ 按位异或& 按位与<<,>> 移位+,- 加法与减法*,/,% 乘法.除法与取余+x,-x 正负号~x 按位翻转** 指数x.attribute 属性参考x[

位与&amp;, 位或| ,位异或 ^ 总结

目录 按位与运算符(&) 参加运算的两个数据,按二进制位进行“与”运算. 运算规则:0&0=0;  0&1=0;   1&0=0;    1&1=1; 即:两位同时为“1”,结果才为“1”,否则为0 例如:3&5  即 0000 0011& 0000 0101 = 00000001  因此,3&5的值得1. 另,负数按补码形式参加按位与运算. “与运算”的特殊用途: (1)清零.如果想将一个单元清零,即使其全部二进制位为0,只要与一个各位都为

运算符--&gt;位移运算符和一些其他运算符

移位运算符 移位运算符就是在二进制的基础上对数字进行平移.按照平移的方向和填充数字的规则分为三种:<<(左移).>>(带符号右移)和>>>(无符号右移).在移位运算时,byte.short 和 char 类型移位后的结果会变成 int 类型,对于 byte.short.char 和 int 进行移位时,规定实际移动的次数是移动次数和 32 的余数,也就是移位 33 次和移位 1 次得到的结果相同.移动 long 型的数值时,规定实际移动的次数是移动次数和 64 的

PHP运算符:算数运算符、逻辑运算符、三目运算符、位运算符、字符串运算符。

赋值运算符 PHP 赋值运算符用于向变量写值. PHP 中基础的赋值运算符是 "=". 这意味着右侧复制表达式会为左侧运算数设置值. ___________________________________________________________________________________________________ 四则运算符(+ - * / %) 四则运算符及数学运算符 数学运算符号有 4 种,包括:“+”(加).“-”(减)“*”(乘).“/”(除).这些都是人们通