这是怎样的& (&符号)逐位运算符工作?
$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的评论;你想使用按位运算符的一些用例是什么?
答案 0 :(得分:1)
它比较long的二进制的每个位,并且两个位都是1
,结果是1
,否则结果是0
。例如:
第一个八位位:
192 = 11000000
255 = 11111111
result = 11000000 = 192
最后一个八位字节:
255 = 11111111
0 = 00000000
result = 00000000 = 0