Operators – Referencia de Lenguaje Spin
cálculos son simples el resultado en un valor tamaño Word deberá tratarse como entero
signado en el rango de -32768 to +32767. Cuando necesita desarrollar mas cálculos con esos
valores de tamaño word use el operador Sign-Extend 15 para convertir el numero en la forma
X
apropiada entera de 32-bit con signo. En el ejemplo de arriba se asume que
representa el
valor -300, el cual en la forma de complemento de dos de 16-bit es actualmente el valor
~~X
65,236 (%11111110 11010100). La porción
de la expresión extiende el bit de signo desde
el bit 15 hasta el bit 31 convirtiendo el numero en la forma apropiada del complemento a dos
de 32-bit de -300 (%11111111 11111111 11111110 11010100). Sumando ese valor de signo
extendido a 50 el resultado es -250, que es la intención, mientras por otro lado podría haber
resultado en 65,286 sin la extensión de signo apropiada.
El siguiente es un ejemplo de la forma del operador Post-Set.
Y := X~~ + 2
El operador Post-Set en este ejemplo active la variable a -1 (todos los bits altos) despues de
X
proporcionar su valor actual para la siguiente operación. En este ejemplo si
comienza en 6,
X~~
proporcionara el valor actual para la expresión (6 + 2) para evaluar después, y
X
Y
almacenara -1 en
. La expresión 6 + 2 se evalúa y el resultado, 8, se almacena en
. Después
X
Y
de esta instrucción
se iguala a -1 y
se iguala a 8.
Como Sign-Extend 15 y Post-Set son siempre operadores de asignación aplican las reglas de
Asignación Intermedia para ambos (ver Pág. 151).
Corrimiento aritmético a la Derecha '
', '
'
~>
~>=
El operador de corrimiento aritmético a la derecha es igual que el operador de corrimiento a
la derecha excepto que mantiene el signo como en una división por 2, 4, 8, etc. en un valor
signado. El corrimiento aritmético a la derecha puede usarse en expresiones variables y
constantes enteras pero no en expresiones constantes de punto flotante. Ejemplo:
X := Y ~> 4
Y
Y
El ejemplo de arriba mueve
a la derecha en 4 bits, manteniendo el signo. Si
es -3200
-3200 ~> 4
(%11111111 11111111 11110011 10000000) entonces
= -200 (%11111111
11111111 11111111 00111000). Si la misma operación se hubiera hecho con el corrimiento a
la derecha el resultado seria en cambio 268,435,256 (%00001111 11111111 11111111
00111000).
~>=
El corrimiento aritmético a la derecha tiene una forma de asignación,
, que usa la variable
a su izquierda del primer operando y en el resultado destino. Por ejemplo,
X ~>= 2
'Forma corta de X := X ~> 2
Pagina 162 · Manual Propeller v1.1