Uso del desplazamiento de bits
1. Uso del desplazamiento de bits #
Utilizar desplazamiento de bits en vez de la multiplicación o división si es posible.
Por ejemplo:
- x >> 2 es equivalente a x / 4
- x << 10 es equivalente a x * 1024
- 1 << 20 es equivalente a Math.pow(2, 20).
- int num1 = a / 2; === int num1 = a >> 1
- int num2 = a / 4; === int num2 = a >> 2
- int num3 = a / 8; === int num3 = a >> 3
- int num4 = a * 4; === int num4 = a << 2
- int num5 = a * 8; === int num5 = a << 3
2. Ejemplo incorrecto: Uso de división en desplazamiento de bits #
Cuando dividimos por potencias de 2, se puede optimizar usando operadores de desplazamiento de bits (>> y <<).
Cargando actividad al acercarte…
3. Ejemplo optimizado: Uso de desplazamiento de bits #
Cuando trabajamos con números enteros, en lugar de dividir por potencias de 2, podemos usar operadores de desplazamiento (>> para división y << para multiplicación).
Cargando actividad al acercarte…
Beneficios #
- El operador de desplazamiento es más rápido que la división.
- La optimización es útil en cálculos de bajo nivel o aplicaciones de alto rendimiento.
Resumen del tema
Conceptos clave #
- Operaciones a Nivel de Bit (Bit Shifts): instrucciones a nivel de ensamblador de un solo ciclo de CPU.
- Desplazamiento a la Izquierda (
x << k): multiplicación exacta por (ej.x << 3equivale ax * 8). - Desplazamiento a la Derecha (
x >> k): división entera truncada por (ej.x >> 2equivale ax // 4). - Ámbito de Aplicación: programación de sistemas, compresión, criptografía, gráficos y procesamiento de señales donde se trabaja con enteros.
Qué debes recordar #
Aprovecha los operadores de desplazamiento a nivel de bits (<<, >>) para multiplicar o dividir rápidamente por potencias de 2 en operaciones enteras críticas.