add
Suma los dos números de arriba de la pila entera y deja el resultado.
Datos
- Palabra
add- Familia
- Básicos
- Pila entera
- saca 2, pone 1
- Qué hace
- Saca dos números y apila su suma. Arriba de 16.777.216 pierde precisión, y pasando los 2000 millones da la vuelta.
- Costo
- Comando básico
- Se ejecuta en
- dentro de un gen: en la condición (cond) y en el cuerpo (start o else)
a b add deja a + b. Es la suma de toda la vida, con el orden de siempre en el ADN: primero los dos números, después la palabra.
| Palabra | Pila después |
|---|---|
3 | 3 |
4 | 3 4 |
add | 7 |
El uso más común es ajustar una lectura antes de guardarla o llevar una cuenta en memoria libre. Este bot suma 1 a la celda 50 en cada ciclo:
cond
start
*50 1 add 50 store
stopPara eso puntual hay un atajo, inc (50 inc), que hace lo mismo con menos palabras y por la décima parte de la energía que cuesta un store (ver Ejecución y costos).
Dos rarezas heredadas, que solo se notan con números enormes, más allá de lo que cabe en la memoria:
- Arriba de 16.777.216, la suma pierde precisión: los operandos se redondean antes de sumar y el resultado puede errar por unas unidades (más cuanto más grande sea el número).
20000 1000 mult 1 add 1 addda 20000001 y no 20000002. - Si el resultado pasa de 2000 millones, da la vuelta en lugar de quedarse en el tope:
32000 32000 mult dup addda 48 millones.mult, en cambio, satura.
La resta, sub, se comporta igual.