PHP位运算符ide
位运算符的基本规则:spa
1:位运算符都是针对整数的二进制数字形式而进行的。orm
2:按位与运算基本规则:blog
规则表:
get
1&1 => 1
it
1&0 => 0
io
0&1 => 0
class
0&0 => 0
二进制
3:按位或运算基本规则:im
规则表:
1|1 => 1
1|0 => 1
0|1 => 1
0|0 => 0
4:按位非运算:
~1 => 0
~0 => 1
5:按位异或运算:
1^1 => 0
0^0 => 0
1^0 => 1
0^1 => 1
规律:相同就是0,不一样就是1
按位与运算:
形式:A&B //A和B都是数字,实际上是常规的十进制数字,但内部会按二进制进行计算
含义: 将A和B的二进制形式的每个位上的二进制数字进行按位与(&)运算以后的结果。
说明:一个数字的二进制形式一般是32位的0和1的组合,也多是64位,但为了说明问题,咱们一般只用8位。
举例:
$r1 = 9 & 13; //9的二进制是“1001”,13的二进制是“1101”
按位与运算:
形式:A|B //A和B都是数字,实际上是常规的十进制数字,但内部会按二进制进行计算
含义: 将A和B的二进制形式的每个位上的二进制数字进行按位与(|)运算以后的结果。
举例:
$r1 = 18 | 10; //18的二进制是“10010”,10的二进制是“1010”
按位左移运算:<<
形式:A << n; //A是一个要被移动的数字,n是一个指定要移动的位数
含义:将数字A的二进制形式的每个位上的数字左移动指定的位数n,则最左边的n位移出去,最右边空出来的n位补0便可。
举例:
$r1 = 9 << 2; //9的二进制形式为1001
按位右移运算:>>
形式:A >> n; //A是一个要被移动的数字,n是一个指定要移动的位数
含义:将数字A的二进制形式的每个位上的数字右移动指定的位数n,则最右边的n位移出去,最左边空出来的n位补0便可。(对正数,实际上补符号位)
按位非运算:~
将一个数字的二进制形式的每个二进制数字取反所获得的结果。
按位异或:
将2个整数的二进制形式的每个对应数字进行异或运算以后的结果。