& -bitwise运算符如何工作?

时间:2014-04-07 15:11:52

标签: php bit-manipulation bitwise-operators

这是怎样的& (&符号)逐位运算符工作?

$bcast = ip2long("192.168.178.255");
$smask = ip2long("255.255.255.0");
$nmask = $bcast & $smask;
echo long2ip($nmask); // Will give 192.168.178.0

它是否比较了每一位?我了解此代码段中的大部分魔法都是由long2ip()完成的,但$nmask如何给出正确的值?

编辑:澄清..
$bcast返回' 3232281343'
$smask返回' 3232281088'

1)& -operator会自动将其转换为二进制数吗? 2)根据我对AbraCadaver的评论;你想使用按位运算符的一些用例是什么?

1 个答案:

答案 0 :(得分:1)

它比较long的二进制的每个位,并且两个位都是1,结果是1,否则结果是0。例如:

第一个八位位:

192    = 11000000
255    = 11111111
result = 11000000 = 192

最后一个八位字节:

255    = 11111111
0      = 00000000
result = 00000000 = 0