2012-03-15 14 views
7

Dlaczego następujący kod wyjściowy 128?Dziwne zachowanie drukowania w PHP?

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

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

+0

Zobacz instrukcję operatorów bitowych: http://www.php.net/manual/en/language.operators.bitwise.php – ghkaren

Odpowiedz

13

Ponieważ jest to bitwise operator. Myślę oznacza 4 mnożona 2^5 ponieważ środek operatorski

Przesuw bity $ a $ b kroków w lewo (w każdym etapie oznacza „pomnożyć przez dwa”)

więc to pięć kroków. To 4 * 2 * 2 * 2 * 2 * 2 (Ale zgaduję, wszystko dzieje się na poziomie bitów).

+0

Dzięki Nicola.Nice Wyjaśnienie – yogeshK

14

Patrz Bitwise Operators:

Musimy znaleźć 4 < < 5. Oznacza to przesunięcie bitów 4 5 razy w lewo:

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

+1 za przykład. Przypomina mi, że muszę się nauczyć, jak * operatory bitowe rzeczywiście działają *. :) –

+0

@AmalMurali dzięki bratu. :) – mithunsatheesh