一, 二进制的逻辑运算
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. “<<” 左移 将二进制向左移动N位,然后用0在右侧补全N位。
举例1:
左移2位 | 结果 |
---|---|
110010 << 2 | 001000 |
6. “>>” 右移 将二进制向右移动N位,然后在左侧补全N位(正数补0,负数补1)。
举例1:
右移2位 | 结果 |
---|---|
110010 >> 2 | 001100 |
二,了解和应用
PHP中“&”和“^”运算的两个值如果都是字符串,则将对组成字符串的字符的ASCII值进行运算,结果将是字符串。
在所有其他情况下,两个操作数都将转换为整数,结果将为整数。
“~” 运算符的操作数是字符串,则将对组成字符串的字符的ASCII值执行操作,结果将是字符串,否则操作数和结果将被视为整数。