<<
Corre los bits del número del tope un lugar a la izquierda, o sea lo multiplica por 2: 5 << deja 10.
Datos
- Palabra
<<- Familia
- Bit a bit
- Pila entera
- saca 1, pone 1
- Qué hace
- Corre los bits del tope un lugar a la izquierda: lo multiplica por 2. Con números enormes puede cambiar el signo, y 1073741824 << da 0.
- Costo
- Comando de bits
- Se ejecuta en
- dentro de un gen: en la condición (cond) y en el cuerpo (start o else)
x << saca un número, corre todos sus bits un lugar a la izquierda (entra un 0 por la derecha) y apila el resultado. En la práctica es multiplicar por 2: 5 << da 10 y -3 << da −6. Corre un solo lugar; para multiplicar por 8 hay que escribirlo tres veces:
| Pila antes | Palabra | Pila después |
|---|---|---|
1 | << | 2 |
2 | << | 4 |
4 | << | 8 |
Sirve para fabricar la potencia de 2 que corresponde a una marca, la máscara que después usan | y &:
' prende el bit de valor 8 de la celda 50
cond
start
*50 1 << << << | 50 store
stopLa diferencia con 2 mult aparece recién con números de más de mil millones, lejos de lo que entra en la memoria: mult se planta en dos mil millones, mientras que << puede cambiar el signo del número, y sobre 1073741824 (2³⁰) da 0, una rareza heredada del DarwinBots 2.48.32. Recordá también que el resultado se recorta a ±32000 recién al guardarlo (ver Números y direcciones).
Con la pila vacía deja 0. El corrimiento a la derecha es >>.