PHP中的按位运算符

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 & 2222

xbo*_*nez 5

&做一点点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