1、位运算符&
:位与
类似逻辑运算符
与
:&&
、and
例:3&7
00000011;//3的二进制
00000111;//7的二进制
//对每byte与运算
00000011;//结果为3
即:
echo 3&7;
输出:
3
2、位运算符^
:位异或
类似逻辑运算符
异或
:xor
,但是xor
是以值直接进行逻辑运算结果是bool值。^
则是对数字的二进制byte进行异或运算,得到结果再转为十进制返回
例:3^7
00000011;//3的二进制
00000111;//7的二进制
//对每byte异或运算
00000100;//结果为4
即:
echo 3^7;
输出:
4
3、位运算符|
:位或
类似逻辑运算符
或
:||
、or
例:3|7
00000011;//3的二进制
00000111;//7的二进制
//对每byte或运算
00000111;//结果为7
即:
echo 3|7;
输出:
7
4、其他位运算符<<
、>>
:将二进制的全部位向左移、右移
也称作移位
比如:echo 5 << 1
因为 5 转换二进制为 00000101 左移动1位变成 00001010
echo 5 << 1;//输出10
比如:echo 5 >> 1
因为 5 转换二进制为 00000101 右移动1位变成 00000010
echo 5 >> 1;//输出2
进行乘除
运算时,使用移位
比*
、/
更高效。但仅适合乘数
(*右边的数)、除数
(/右边的数)为整数,且乘数、除数为2的n次方的场景
例如:
echo 32 / 8;//输出4
//可改成
echo 32 >> 3;//输出4
echo 33 >> 3;//输出4(去除了余数)
例如:
echo 3 * 16;//输出48
//可改成
echo 3 << 4;//输出48