PHP中的奇怪打印行为?

7
为什么以下代码输出128?
<?php 
    print 4 << 5; 
?>

http://php.net/manual/en/language.operators.bitwise.php - Pekka
请查阅位运算符手册:http://www.php.net/manual/zh/language.operators.bitwise.php - ghkaren
2个回答

15

请参考位运算符

我们需要找到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

+1 个例子。这让我想起我必须学习位运算符的实际工作方式。 :) - Amal Murali
@AmalMurali 谢谢兄弟。 :) - Mithun Satheesh

15
因为它是一种位运算符。我认为它意味着4乘以2的5次方,因为该运算符的含义是:

将$a$的比特位向左移动$b$步(每个步骤表示“乘以二”)

所以是五步。这是4 * 2 * 2 * 2 * 2 * 2(但我猜测;所有操作都在比特级别上进行)。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接