Pol*_*ism 4 php bit-manipulation operator-keyword
我有以下代码:
print "\n1 & 11\n";
var_dump(1 & 11);
print "\n 2 & 222\n";
var_dump(2 & 222);
Run Code Online (Sandbox Code Playgroud)
为什么第一个结果是1?为什么第二个结果是2?
在PHP网站说,2 & 222(例如)应该给我回一个布尔值:
例如,$ a&$ b == true计算等价,然后按位和; while ($ a&$ b)== true按位计算,然后计算等价."
我不明白,这怎么会2 & 222是2?
&做一点点AND.也就是说,它对AND输入的所有位执行操作.
二进制:
2 = 0000000010
222 = 1011011110
2 & 222 = 0000000010 ( = 2)
Run Code Online (Sandbox Code Playgroud)
不要混淆&与&&.&做了bitwise AND,而&&做了logical AND.
2 && 222 = true
2 & 222 = 2
Run Code Online (Sandbox Code Playgroud)
至于 1 & 11
1 = 0001
11 = 1011
1 & 11 = 0001 ( = 1)
Run Code Online (Sandbox Code Playgroud)
所以, 1 & 11 = 1
进一步阅读:
http://en.wikipedia.org/wiki/Binary_and#AND
http://en.wikipedia.org/wiki/AND_gate