Operadores << y >> en PHP (desplazamientos binarios)

Eventos, PHP, Programación por fillito el 10-09-2008

Etiquetado como : ,

Esta semana me he puesto ya en serio a prepararme para la certificación Zend de Ingeniero PHP.

Entre el temario del primer capítulo, encontré dos operadores que jamás había usado y me llamaron mucho la atención porque ni siquiera los había visto usados en algún otro script php. Me sonaban de cuando había estudiado C en la universidad, y efectivamente hacen lo mismo.

Los operadores "<<" y ">>" realizan un desplazamiento binario de n posiciones, hacia la izquierda o a la derecha respectivamente.

Para el que no sepa exáctamente qué es un desplazamiento binario, lo explico:

La representación binaria de 5 (decimal) es 101. Un desplazamiento binario nos sirve para desplazar, a la izquierda o a la derecha, sus dígitos.  Por lo que un desplazamiento binario de 2 posiciones sobre el numero 5 nos daría como resultado el binario 10100 (20 en decimal).
Su uso puede ser bastante útil y extremadamente eficiente cuando queremos multiplicar un número por alguna potencia de dos, ya que, internamente, el desplazamiento binario será mucho más rápido y requerirá menos operaciones que la multiplicación.

Su sintaxis es muy sencilla, y como cualquier otro operador aritmético, su asociatividad de izquierda.

PHP:
  1. $a << n;

Donde n es el número de desplazamientos que queremos hacer hacia la izquierda.

Nota adicional: si pretendemos usar el desplazamiento binario tenemos que tener cierto cuidado y conocimiento de las características técnicas de la máquina en la que estamos corriendo el script. Ya que si estamos utilizando una máquina de 32bits , los datos se almacenarán, como es lógico, en palabras de 32 bits, y si intentamos realizar un desplazamiento binario de 32 posiciones, obtendremos como resultado un estupendo overflow.
Por lo que si queremos multiplicar por potencias de 2 , tened cuidado de cuántas posiciones desplazais, ya que a veces os convendrá más utilizar la función pow(n,m);

Comentarios :

  1. creo que no lo voy a utilizar mucho en nvivo.es pero gracias por comentar el trucaso que seguro cae en el examen jeje

  2. jaja, yo también dudo que lo use en cualquier otra cosa que no sea el examen. Pero siempre es bueno conocer estas cosillas... nunca sabes cuándo te podría venir bien echar mano de él

Deja tu comentario