2010-05-07 16 views

Respuesta

32

50 en binario es 11 0010, desplazamiento a la derecha por 4 rendimientos 11 que es igual a 3.

Ver PHP documentation y Wikipedia.

+0

¿Cuál es el nombre de '>>'? – user198729

+5

Operador de bit a bit. Específicamente, desplazamiento aritmético en el operador de bit a la derecha. – webbiedave

+3

operador de desplazamiento a la derecha –

3

> > es el operador de desplazamiento a la derecha binario.

Su instrucción desplaza los bits en el valor numérico 50 cuatro lugares a la derecha. Debido a que todos los números enteros están representados en two's complement, esto equivale a 3. Una manera fácil de recordar esto es que un desplazamiento hacia la derecha equivale a dividir por 2, y un desplazamiento hacia la izquierda es lo mismo que multiplicar por 2.

+0

¿No está cambiando? – user198729

+0

Sí, por supuesto, error estúpido. Se corrigió en la respuesta. – driis

+1

Está cambiando, ¿verdad? - lo siento, no pude resistir;) –

1

Desplaza los bits hacia abajo en cuatro lugares.

50 en binario es 110010.

desplaza hacia abajo cuatro lugares es 11, que es 3.

3

El operador >> se llama un operador de binary right shift.

Desplazar los bits a la derecha 4 veces es lo mismo que dividir por dos, cuatro veces seguidas. El resultado, en este caso sería 3.125. Como 50 es un int, el cambio de bit devolverá el piso de esto, que es 3.

Dicho de otra manera, 50 es 0b110010 en binario. Shifted 4 veces tenemos 0b11, que es 3 en decimal.

17

Como se documenta en php.org, el operador >> es un operador de desplazamiento a nivel de bits, que desplaza los bits a la derecha:

$ a >> $ b - Desplaza los bits de $ a, $ b hacia la derecha (cada paso significa "dividir por dos")

50 en binario es 110010, y el operador >> desplaza esos bits en 4 lugares en su código de ejemplo. Aunque esto sucede en una sola operación, usted podría pensar que es en varios pasos como este:

  • Paso 1 - 00011001
  • Paso 2 - 00001100
  • Paso 3 - 00000110
  • Paso 4 - 00000011

Desde binaria 11 es igual a 3 in de Cimal, el código produce 3.

+0

Es posible que desee almohadilla a la derecha con 0 para hacerlo más claro (aunque técnicamente lo mismo, parece que los bits no están cambiando, sino más bien cayendo desde el lado derecho). – Synetech

+0

Gracias por los comentarios, solo actualicé la respuesta para aclarar ambos puntos. –

+1

+1, la mejor explicación para alguien que nunca ha explorado las operaciones bit a bit. –

1

Se llama desplazamiento a la derecha. 'Los bits del operando izquierdo se desplazan a la derecha por el número de posiciones del operando derecho. Las posiciones de bit desocupadas a la izquierda se llenan con el bit de signo, y los bits desplazados a la derecha se descartan.

Se puede encontrar información sobre él aquí: http://php.comsci.us/etymology/operator/rightshift.php

+1

El enlace está roto (* "Este nombre de dominio ha expirado." *). –