2012-03-15 50 views
7

为什么下面的代码输出128?在PHP中奇怪的打印行为?

<?php 
    print 4 << 5; 
?> 
+0

http://php.net/ manual/zh/language.operators.bitwise.php – 2012-03-15 11:25:24

+0

请参阅按位运算符的手册:http://www.php.net/manual/en/language.operators.bitwise.php – ghkaren 2012-03-15 11:26:40

回答

13

因为这是一个bitwise operator。我认为,这意味着4乘以2^5,因为该操作员装置

移位的$一个$ B步骤,将左边的位(每个步骤表示“乘以二 ”)

所以这是五个步骤。它是4 * 2 * 2 * 2 * 2 * 2(但我在这里猜测;一切都在比特级发生)。

+0

感谢Nicola.Nice解释 – yogeshK 2012-03-15 11:35:44

14

参考Bitwise Operators

我们必须找到4 < < 5.它意味着4 5倍的位左移:

4 is 00000000000000000000000000000100 
4 << 5 after shifting is 00000000000000000000000010000000 
00000000000000000000000010000000 is 2^7 = 2*2*2*2*2*2*2 = 128 
+0

+1例。提醒我我必须了解*按位运算符实际工作的方式*。 :) – 2013-11-18 05:46:36

+0

@AmalMurali感谢兄弟。 :) – mithunsatheesh 2013-11-18 08:42:59