PHP位运算符



位运算符的基本规则:


1:位运算符都是针对整数的二进制数字形式而进行的。

2:按位与运算基本规则:

规则表:

1&1 => 1

1&0 => 0

0&1 => 0

0&0 => 0

3:按位或运算基本规则:

规则表:

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个整数的二进制形式的每一个对应数字进行异或运算之后的结果。