Las operaciones de desplazamiento a izquierda <<
y a derecha >>
son operaciones básicas en la manipulación de datos binarios.
Estas operaciones simplemente desplazan los bits de un número en una o varias posiciones hacia la izquierda o hacia la derecha.
¿Porqué son útiles estas dos operaciones? Si recordamos, cada dígito de un número binario expresa un factor que va a multiplicar a una potencia de número 2.
Por ejemplo,
Binario | 0 | 1 | 0 | 1 | 1 | 0 |
---|---|---|---|---|---|---|
Potencia | 32 | 16 | 8 | 4 | 2 | 1 |
Multiplicar | 16 | 4 | 2 |
Si desplazamos todos los bits a la izquierda, cada potencia tiene un número más. Es decir, es como si hubiéramos multiplicado todo el número por dos.
<< 1 | 1 | 0 | 1 | 1 | 0 | 0 |
---|---|---|---|---|---|---|
Potencia | 32 | 16 | 8 | 4 | 2 | 1 |
Multiplicar | 32 | 8 | 4 |
Por el contrario, desplazar a la derecha es equivalente a dividir entre dos.
>> 1 | 0 | 0 | 1 | 0 | 1 | 1 |
---|---|---|---|---|---|---|
Potencia | 32 | 16 | 8 | 4 | 2 | 1 |
Multiplicar | 8 | 2 | 1 |
Estas operaciones tienen la ventaja de que son muy rápidas y eficientes a nivel de hardware. Por lo que son ampliamente utilizadas a nivel interno por el ordenador.
Desplazamiento a izquierda
El desplazamiento a izquierda es una operación que mueve todos los bits de un número binario hacia la izquierda en una cantidad determinada de posiciones.
Este desplazamiento equivale a multiplicar el número binario por potencias de dos, dependiendo del número de posiciones desplazadas.
Por ejemplo, al desplazar el número binario 1011
(11 en decimal) dos posiciones a la izquierda:
1011 (binario original)
<< 2 (desplazamiento a izquierda de dos posiciones)
_________
101100 (resultado)
El resultado es 101100
, que es igual a 44 en decimal. Es decir, como haber multiplicado 1011
por 2 dos veces.
Desplazamiento a derecha
El desplazamiento a derecha es una operación que mueve todos los bits de un número binario hacia la derecha en una cantidad determinada de posiciones.
Este desplazamiento equivale a realizar una división entera por potencias de dos, dependiendo del número de posiciones desplazadas.
Por ejemplo, al desplazar el número binario 1011
(11 en decimal) dos posiciones a la derecha:
1011 (binario original)
>> 2 (desplazamiento a derecha de dos posiciones)
_________
10 (resultado)
El resultado es 10
, que es igual a 2 en decimal, que es lo mismo que si hubiéramos dividido 11 entre 2 veces (desechando los restos).