DarwinBotsManual
Abrir la app EnglishEN

<<

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 antesPalabraPila 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
stop

La 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 >>.