DarwinBotsManual
Abrir la app EnglishEN

~

Invierte todos los bits del número del tope: x ~ deja −x − 1, así que 5 ~ da −6 y 0 ~ da −1.

Datos

Palabra
~
Familia
Bit a bit
Pila entera
saca 1, pone 1
Qué hace
Cambia el tope por su complemento: da vuelta los 32 bits, así que x queda en −x − 1. Con la pila vacía deja −1.
Costo
Comando de bits
Se ejecuta en
dentro de un gen: en la condición (cond) y en el cuerpo (start o else)

~ saca un número, le da vuelta cada uno de sus 32 bits (los 0 pasan a 1 y los 1 a 0) y apila el resultado. En complemento a dos eso equivale siempre a −x − 1:

Pila antesDespués de ~
5-6
0-1
-10
4-5

Su uso típico es armar una máscara para apagar un bit con &: 4 ~ tiene prendidos todos los bits menos el de valor 4, y al hacer & con la celda deja todo igual salvo ese bit.

' apaga el bit de valor 4 de la celda 50, sin tocar los demás
cond
start
  *50 4 ~ & 50 store
stop

Si la celda 50 valía 5 (bits de valor 1 y 4), queda en 1.

Con la pila vacía opera sobre 0 y deja −1. Las otras operaciones de bits están en Bit a bit.