详解PHP位运算符详细解释了PHP位操作符,推荐:《PHP视频教程》
位运算符
位运算符是指将二进制位从低位对齐到高位后的操作。
符号作用举例说明了个人的理解,即按位and $m $n全1是1,否则0|按位or $m | $n全0是0,1按位异或$m | $n不同于1,相同的是0~按位反转~$m将$m $n向右移动运算符
?php
$ m=1;
$ n=2;
$ Mn=$ m $ n;
echo $ mn运行结果为0
说明:分别将1和2转换为二进制
00000001
00000010
在逐位比较的过程中,所有的1都是1,比较结果是00000000,所以输出0
|运算符
?php
$ m=1;
$ n=2;
$ Mn=$ m | $ n;
echo $ mn运算的结果是3,如上所述被转换成二进制
00000001
00000010
在按位“或”的过程中,如果1是1,所有的0都是0,结果是00000011,所以输出3
^运算符
?php
$ m=1;
$ n=2;
$ Mn=$ m ^ $ n;
echo $ mn运算的结果是3,如上所述被转换成二进制
00000001
00000010
按位OR过程中,差为1,同为0,所以结果为00000011,然后输出3。
~运算符
?php
$ m=2;
$ m1=~ $ m;
echo $ m1运行结果是-3,这里发人深省。
注意:在计算机中,负数以其正补码的形式表示。
32位原始代码1: 2是0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0010
2:按位反转后是1111 1111 1111 1111 1111 1111 1111 1111 1111 1101
由于前数为1,符号位为1,是负数,所以用其正值补码的形式表示:(符号位不变,逐位反相,末尾加1)
1000 0000 0000 0000 0000 0000 0000 0011
所以输出是-3
运算符
?php
$ m=3;
$ m1=$ m1;
echo $ m1手术的结果是6
左移操作的本质是将对应数据的二进制值一点一点左移,用0填充空出的位置,最高位溢出丢弃。
32位原始代码3是0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0011
向左移动一位:0000 0000 0000 0000 0000 0000 0000 0000 0000 0110
所以是6
根据手册描述可以看出,左移一位是为了实现二乘。位移运算的运算速度远高于乘法。因此,在处理数据的乘法运算时,使用位移运算可以获得更快的速度。
建议将2的所有乘法运算转换为位移运算,可以提高程序的运行效率。
运算符
向右移动一位,类似于运算符,只不过这个向右移动了,这里就不多解释了。
以上是php bit运算符的详细内容。请多关注其他关于Lei.com PHP知识的相关文章!