# Logic

Las funciones Logic permiten realizar operaciones de álgebra booleana y pruebas condicionales en la hoja de cálculo. Todas las funciones a nivel de bits realizan bit a bit la operación lógica que les corresponde usando la representación binaria de los argumentos y devuelven el número binario resultante en forma decimal. Por ejemplo, el bit 0 del Valor0 se compara con el bit 0 del Valor1, el bit 1 del Valor0 se compara con el bit 1 del Valor1, etc.

Consejo: Las funciones a nivel de bits resultan especialmente útiles con funciones MultiStatus, cuando se combinan los resultados de múltiples condiciones de verdadero/falso en una interfaz gráfica de usuario o una salida discreta.

Operador | Símbolo
--- | ---
NOT | !
AND | &&
OR | ||
Equivalente a | ==
Distinto de | <> (o !=)

Para todas las funciones lógicas:

- FALSO = 0
- VERDADERO = cualquier resultado distinto de cero

Nota: Las funciones booleanas tratarán como FALSO cualquier argumento que haga referencia a una celda vacía o una celda que contiene una cadena vacía. Los argumentos que hacen referencia a una cadena no vacía (incluso la cadena "0") son tratados como VERDADEROS.

Función | Descripción
And(Valor1, Valor2, ...) | Devuelve 1 si todos los valores son distintos de cero. (AND lógico el resultado es VERDADERO cuando los dos valores son VERDADEROS). Ejemplos: And(45, -77) devuelve 1. And(65534, 0) devuelve 0. And(-3, -2, -1, 1, 2, 3) devuelve 1. And(-1, 0, 1) devuelve 0.
BitAnd(Valor1, Valor2, ...) | Devuelve el resultado de aplicar la operación AND bit a bit a los valores. Nota: Procesa y devuelve valores enteros con signo de 32 bits. Ejemplos: BitAnd(45, 77) devuelve 13. 45 = 0000 0000 0000 0000 0000 0000 0010 1101 en formato binario, 77 = 0000 0000 0000 0000 0000 0000 0100 1101 en formato binario. Al comparar individualmente cada bit común en estos dos números binarios de 16 bits utilizando la operación AND, se obtiene 0000 0000 0000 0000 0000 0000 0000 1101 que es = 13 en formato decimal.
BitNot(Valor) | Devuelve el inverso bit a bit de Valor. Nota: Procesa y devuelve valores enteros con signo de 32 bits. Ejemplos: BitNot(45) devuelve -46. 45 = 0000 0000 0000 0000 0000 0000 0010 1101 en formato binario. Al convertir cada 0 en un 1 y cada 1 en un 0 se obtiene 1111 1111 1111 1111 1111 1111 1101 0010 en formato binario que es igual a -46 en formato decimal.
BitOr(Valor1, Valor2, ...) | Devuelve el resultado de aplicar la operación OR bit a bit a los valores. Nota: Procesa y devuelve valores enteros con signo de 32 bits. Ejemplos: BitOr(45, 77) devuelve 109. 45 = 0000 0000 0000 0000 0000 0000 0010 1101 en formato binario, 77 = 0000 0000 0000 0000 0000 0000 0100 1101 en formato binario. Al comparar individualmente cada bit común en estos dos números binarios de 16 bits utilizando la operación OR, se obtiene 0000 0000 0000 0000 0000 0000 0110 1101 que es = 109 en formato decimal.
BitXor(Valor1, Valor2, ...) | Devuelve el resultado de aplicar la operación XOR (OR exclusivo) bit a bit a los valores. (XOR lógico el resultado es VERDADERO si uno y solo uno de los bits es VERDADERO. El resultado es FALSO si 2 o más bits son iguales). Nota: Procesa y devuelve valores enteros con signo de 32 bits. Ejemplos: BitXor (45, 77) devuelva 96. 45 = 0000 0000 0000 0000 0000 0000 0010 1101 en formato binario, 77 = 0000 0000 0000 0000 0000 0000 0100 1101 en formato binario. 0110 0000 son los únicos bits no comunes entre 45 y 77, como se demuestra a continuación.
45 | 77 | XOR por bit | Bit XOR
0 | 0 | dos 0 ≥ XOR FALSO | 0 (FALSO)
0 | 1 | solo un 1 ≥ XOR VERDADERO | 1 (VERDADERO)
1 | 0 | solo un 1 ≥ XOR VERDADERO | 1 (VERDADERO)
0 | 0 | dos 0 ≥ XOR FALSO | 0 (FALSO)
1 | 1 | dos 1 ≥ XOR FALSO | 0 (FALSO)
1 | 1 | dos 1 ≥ XOR FALSO | 0 (FALSO)
0 | 0 | dos 0 ≥ XOR FALSO | 0 (FALSO)
1 | 1 | dos 0≥ XOR FALSO | 0 (FALSO)
0110 0000 = 96 en decimal.
If(Cond, Valor1, Valor2) | Devuelve el Valor1 si Cond es distinto de cero; en caso contrario, devuelve el Valor2. Nota: Si la condición o los argumentos hacen referencia a celdas vacías, se interpretan como cero (FALSO).
InRange(Valor, Inicio, Final) | Devuelve VERDADERO si Min(Inicio,Final) ≤ Valor ≤ Max(Inicio,Final).
InTolerance(Efectivo, Esperado, Tolerancia %, Margen) | Determina si el valor Efectivo se encuentra dentro la Tolerancia % del valor Esperado, siempre que la diferencia entre los valores Efectivo y Esperado es mayor que el Margen. Si el valor de la diferencia porcentual calculada es mayor que el valor de los argumentos Tolerancia % o Margen, la función devuelve 0. De lo contrario, devuelve 1. Los valores se calculan utilizando los valores Esperado y Efectivo proporcionados.
Not(Valor) | Devuelve 0 si el valor es distinto de cero o 1 si el valor es 0. (Lógica inversa) Ejemplos: Not(-12345) devuelve 0. Not(3.14) devuelve 0. Not(2-1) devuelve 0. Not(1-1) devuelve 1.
OneShot(Valor) | Devuelve verdadero (1) si el último valor de entrada es verdadero (distinto de cero), mientras que el valor de entrada anterior era falso (0). En todos los demás casos, la función devuelve falso (0). Ejemplos: OneShot(A1) se refiere a la celda A1 que contiene una función booleana. En la primera ejecución, la celda A1 devuelve 0. OneShot(A1) devuelve 0. En la segunda ejecución, la celda A1 devuelve 1. OneShot(A1) devuelve 1. OneShot(B2) se refiere a la celda B2 que contiene una función que devuelve una gama más amplia de valores. En la primera ejecución, la celda B2 devuelve 12. OneShot(B2) devuelve 1. En la segunda ejecución, la celda B2 devuelve 0. OneShot(B2) devuelve 0. Nota: Según cual sea la velocidad de disparo, los resultados de la función OneShot pueden llegar a emitirse a un ritmo muy rápido. Esto puede implicar que no se actualice visiblemente el valor de salida en la pantalla.
Or(Valor1, Valor2, ...) | Devuelve 0 si todos los valores son cero; en caso contrario, devuelve 1. (OR lógico el resultado es VERDADERO si alguno de los valores es VERDADERO). Ejemplos: Or(45, -77) devuelve 1. Or(-1, 0, 1) devuelve 1. Or(0, 1-1) devuelve 0.