无法理解"&"在这段代码中。我是php的初学者。请让我知道任何人都可以解决它吗?

时间:2015-04-04 06:52:32

标签: php

无法理解此代码中的&。我是php的初学者。请让我知道任何人都可以解决它吗?

  $a = 1;
  $b = &$a;
  $a =5&$b; 
  echo $a; 
  exit();

1 个答案:

答案 0 :(得分:4)

在此上下文中,&是按位andbitwise operators)。

$a = 1;     // the var a is now 1
$b = &$a;   // the var b is now the var a (not the int 1)
$a =5&$b;   // 5 & $b ( 1 = 0001) = ( 1 = 0001) & ( 5 = 0101)
echo $a;    // prints 1
exit();

这样做是获取数字的位值(1 = 0001和5 = 0101)并应用和操作。

在此上下文中理解其他值的一些示例:

( 1 = 0001) = ( 1 = 0001) & ( 1 = 0001)
( 0 = 0000) = ( 1 = 0001) & ( 2 = 0010)
( 1 = 0001) = ( 1 = 0001) & ( 3 = 0011)
( 0 = 0000) = ( 1 = 0001) & ( 4 = 0100)
( 1 = 0001) = ( 1 = 0001) & ( 5 = 0101)
OP问道,

更新:,我会尝试进一步解释:

按位AND运算符将采用两个等长二进制表示并执行逻辑AND

逻辑AND将采用两个操作数,当且仅当其所有操作数均为true时才为true

所以例如:

operand 1    operand 2    result
true         true         true
false        true         false
true         false        false
false        false        false

请注意true = 1false = 0

所以要解释它在你的明确案例(1& 5)中会做些什么:

  • 获取10001}和50101)的二进制表示。
  • 执行逻辑AND(从右到左):
    • 1& 1 = 1(true
    • 1& 0 = 0(false
    • 0& 1 = 0(false
    • 0& 0 = 0(false

结果是00011的二进制表示)。