一, 二进制的逻辑运算
1. “&” 与运算 相同位的值都为1结果就为1,有一位为0结果就为0。
举例1:
1&1=1
1&0=0
0&1=0
0&0=0
举例2:
二进制1
110010
二进制2
001010
结果
000010
2. “|” 或运算 相同位的值有一个为1结果就为1,全部为0结果为0。
举例1:
1&1=1
1&0=1
0&1=1
0&0=0
举例2:
二进制1
110010
二进制2
001010
结果
111010
3. “^” 异或运算 相同位的值都相等就为0,有一位不同就为1。
举例1:
0&1=1
0&0=0
1&1=0
1&0=1
举例2:
二进制1
110010
二进制2
001010
结果
111000
4. “~” 非运算(取反运算,这个叫法好像都对) 将二进值位上的值换成相反的值
举例1:
~1=0
~0=1
5. “<
举例1:
左移2位
结果
110010 << 2
001000
6. “>>” 右移 将二进制向右移动N位,然后在左侧补全N位(正数补0,负数补1)。
举例1:
右移2位
结果
110010 >> 2
001100
二,了解和应用
PHP中“&”和“^”运算的两个值如果都是字符串,则将对组成字符串的字符的ASCII值进行运算,结果将是字符串。
在所有其他情况下,两个操作数都将转换为整数,结果将为整数。
“~” 运算符的操作数是字符串,则将对组成字符串的字符的ASCII值执行操作,结果将是字符串,否则操作数和结果将被视为整数。
二进制权限就是每个权限都用一个二进制数去表示,例如Linux中的读、写、运行,对应着4、2、1。
二进制权限可代表的权限种类受限于程序语言的类型长度,即可代表2^N种。
PHP演示:
输出结果