&安培;作为PHP中的算术运算符

时间:2013-02-01 13:53:28

标签: php math

  

可能重复:
  Reference - What does this symbol mean in PHP?

我正在处理一些遗留代码,我遇到了以下函数:

function is_odd($number) {
   return $number & 1; // 0 = even, 1 = odd
}

我从来没有见过一种方法来检查一个数字是否像以前那样奇怪地写,并且只是想了解它们实际上在做什么。

1 个答案:

答案 0 :(得分:7)

&bitwise-and,它基本上有效,因此对于两个操作数中1的每个位,它会在结果值中生成1并{{1对于所有其他位。如果将任何数字转换为其位表示,您很快就会发现它是确定数字是偶数还是奇数的最低位,例如:

0

最低位(最右边的位,也称为最低有效位)对于每个奇数都是1,对于每个偶数都是0。对于除最低位之外的每一位,执行 5 = 101 10 = 1010 13 = 1101 1030 = 10000000110 总是会产生$n & 1(因为数字1只有一位,你可以想象其余的位用0填充左边以匹配另一个操作数的长度)。所以基本上操作归结为比较操作数的最低位,0是1,所有其他组合都是0.所以基本上当1 & 1得1时,这意味着数字是奇数,否则它甚至都是。

修改

以下是一些示例,用于演示我之前给出的示例值的按位和工作方式,括号中的数字是原始十进制数字:

$n & 1

由此可以很容易地看出,当两个操作数的最右边的位都是1时,结果才为真。