2012-03-15 10 views
7

次のコード出力で128が出力されるのはなぜですか?PHPでの奇妙な印刷動作ですか?

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

http://php.net/ manual/en/language.operators.bitwise.php –

+0

ビット演算子のマニュアルを参照してください。http://www.php.net/manual/en/language.operators.bitwise.php – ghkaren

答えて

13

bitwise operatorですので、私はそれが4は、そのオペレータが

シフト左に$ $ bのステップのビット(各ステップは「2で を乗算」を意味する)ので

を意味するので、2^5に乗算手段と思いますそれは5つのステップです。それは4 * 2 * 2 * 2 * 2です(しかし私はここで推測しています;すべてがビットレベルで起こります)。

+0

ありがとうございましたNicola.Nice説明 – yogeshK

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例。ビット単位の演算子が実際にどのように動作するかを知る必要があることを私に思い出させる。 :) –

+0

@AmalMuraliおかげで兄弟。 :) – mithunsatheesh

関連する問題