2012-03-15 16 views
7

¿Por qué el siguiente código muestra 128?Comportamiento de impresión extraño en PHP?

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

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

+0

Consulte el manual de operadores bit a bit: http://www.php.net/manual/en/language.operators.bitwise.php – ghkaren

Respuesta

13

Porque es una bitwise operator. Creo que significa 4 multiplicado a 2^5 porque ese operador significa

Shift los bits de $ a, $ b pasos a la izquierda (cada paso quiere decir "multiplicar por dos")

tan son cinco pasos. Son 4 * 2 * 2 * 2 * 2 * 2 (Pero estoy adivinando aquí, todo sucede a nivel de bit).

+0

Gracias Nicola.Nice Explicación – yogeshK

14

Consulte Bitwise Operators:

Tenemos que encontrar 4 < < 5. Significa cambiar los bits de 4 5 veces a la izquierda:

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

+1 para el ejemplo. Me recuerda que tengo que aprender cómo funcionan * los operadores bit a bit *. :) –

+0

@AmalMurali gracias hermano. :) – mithunsatheesh