php按位操作符

1.按位与(&):将数字转换成二进制。后进行与操作。将其位数对齐。若相同位都为1。则为1。反之为0;例子:

$a = 5;  0101;                               $a = 35;  10 0011;

$b = 9 ;   1001;                               $b = 23;  01 0111;

$a & $b = 0001;十进制为1           $a & $b = 00 0011; 十进制为3

2.按位或(|):将数字转换成二进制。后进行或操作。将其位数对齐。若相同位都不为1.则为0。反之为1;例子:

$a = 5;  0101;                                $a = 35;  10 0011;

$b = 9 ;   1001;                                 $b = 23; 01 0111;

$a & $b = 1101;十进制为13           $a & $b = 110111; 十进制为55

3.按位非(~):首先明确一点。计算机只认识补码。正数补码原码一致。负数的补码等于反码加一。~为取反(1变0,0变一);

以负5为例:

正数5(32位):  00000000 00000000 00000000 00000101

反码 :                   11111111 11111111 11111111 11111010

-5补码:                 11111111 11111111 11111111 11111011


正数5(32位): 00000000 00000000 00000000 00000101

反码:                 11111111 11111111 11111111 11111010

5的补码:              00000000 00000000 00000000 00000101

例子:$a = 5; $c = ~$a;

 5的补码进行~(得到负数的补码)     111111111111111111111111111111010

 负数补码还原到反码 (-1):            111111111111111111111111111111001

  获得负数原码:                                 000000000000000000000000000000110

  输出: 6 错。 正数~ 为负数; 所以是-6;

下面以-5为例子: -5补码  11111111 11111111 11111111 11111011

                               ~       00000000 00000000 00000000 00000100

                                反码  11111111 11111111 11111111 11111011

                                原码  00000000 00000000 00000000 00000100

 输出 : 4

猜你喜欢

转载自blog.csdn.net/qq_29744347/article/details/80227281