# Logique

Les fonctions logiques permettent de manipuler l’algèbre booléenne et les tests conditionnels sur une feuille de calcul In-Sight. Toutes les fonctions bit à bit effectuent l’opération logique correspondante sur chaque position de bit dans la représentation binaire des arguments et renvoient le nombre binaire résultant sous forme décimale. Par exemple, le bit 0 de Valeur0 est comparé au bit 0 de Valeur1, le bit 1 de Valeur0 est comparé au bit 1 de Valeur1, etc.

Astuce : Les fonctions bit à bit sont particulièrement utiles avec la fonction MultiStatus lorsque vous combinez les résultats de plusieurs conditions Vrai/Faux sur un affichage graphique ou sur une sortie discrète.

Opérateur | Symboles
--- | ---
NON | !
ET | &&
OU | ||
Équivalent à | ==
Différent de | <> (ou !=)

Pour toutes les fonctions logiques :

- FAUX = 0
- VRAI = tout résultat non nul

Remarque : Les fonctions booléennes considèrent comme FAUX tout argument faisant référence à une cellule vide ou à une cellule contenant une chaîne vide. Les arguments faisant référence à une chaîne non vide (même la chaîne "0") sont considérés comme VRAI.

Fonction | Description
And(Valeur1, Valeur2, ...) | Renvoie 1 si toutes les valeurs sont différentes de zéro. (ET logique le résultat est VRAI lorsque les deux valeurs sont VRAI.) Exemples : And(45, -77) renvoie 1. And(65534, 0) renvoie 0. And(-3, -2, -1, 1, 2, 3) renvoie 1. And(-1, 0, 1) renvoie 0.
BitAnd(Valeur1, Valeur2, ...) | Renvoie le ET bit par bit des valeurs. Remarque : Traite et renvoie les valeurs entières signées 32 bits. Exemples : BitAnd(45, 77) renvoie 13. 45 = 0000 0000 0000 0000 0000 0000 0010 1101 en binaire, 77 = 0000 0000 0000 0000 0000 0000 0100 1101 en binaire. En réalisant une opération ET entre les bits correspondants de chacun de ces deux nombres binaires de 16 bits, on obtient 0000 0000 0000 0000 0000 0000 0000 1101, soit 13 en décimal.
BitNot(Value) | Renvoie l’inverse bit à bit de la Valeur. Remarque : Traite et renvoie les valeurs entières signées 32 bits. Exemples : BitNot(45) renvoie -46. 45 = 0000 0000 0000 0000 0000 0000 0010 1101 en binaire. En remplaçant chaque 0 par 1 et chaque 1 par 0, on obtient 1111 1111 1111 1111 1111 1111 1101 0010 en binaire, soit -46 en décimal.
BitOr(Valeur1, Valeur2, ...) | Renvoie le OU bit par bit des valeurs. Remarque : Traite et renvoie les valeurs entières signées 32 bits. Exemples : BitOr(45, 77) renvoie 109. 45 = 0000 0000 0000 0000 0000 0000 0010 1101 en binaire, 77 = 0000 0000 0000 0000 0000 0000 0100 1101 en binaire. En réalisant une opération OU entre les bits correspondants de chacun de ces deux nombres binaires de 16 bits, on obtient 0000 0000 0000 0000 0000 0000 0110 1101, soit 109 en décimal.
BitXor(Valeur1, Valeur2, ...) | Renvoie le XOR (OU exclusif) bit par bit des valeurs. (XOR logique Le résultat est VRAI si un – et seulement un – des bits est VRAI. Le résultat est FAUX si au moins 2 bits sont égaux.) Remarque : Traite et renvoie les valeurs entières signées 32 bits. Exemples : BitXor (45, 77) renvoie 96. 45 = 0000 0000 0000 0000 0000 0000 0010 1101 en binaire, 77 = 0000 0000 0000 0000 0000 0000 0100 1101 en binaire. 0110 0000 sont les seuls bits non communs entre 45 et 77, comme démontré ci-dessous.
45 | 77 | XOR par bit | Bit XOR
0 | 0 | deux 0 ≥ XOR FAUX | 0 (FAUX)
0 | 1 | seulement un 1 ≥ XOR VRAI | 1 (VRAI)
1 | 0 | seulement un 1 ≥ XOR VRAI | 1 (VRAI)
0 | 0 | deux 0 ≥ XOR FAUX | 0 (FAUX)
1 | 1 | deux 1 ≥ XOR FAUX | 0 (FAUX)
1 | 1 | deux 1 ≥ XOR FAUX | 0 (FAUX)
0 | 0 | deux 0 ≥ XOR FAUX | 0 (FAUX)
1 | 1 | deux 0 ≥ XOR FAUX | 0 (FAUX)
0110 0000 = 96 en décimal.
If(Cond, Valeur1, Valeur2) | Renvoie Valeur1 si Cond est différent de zéro ; sinon, renvoie Valeur2. Remarque : Si la condition ou les arguments font référence à des cellules vides, ils sont interprétés comme un zéro (FAUX).
InRange(Valeur, Début, Fin) | Renvoie VRAI si Min(Début,Fin ) ≤ Valeur ≤ Max(Début,Fin).
InTolerance(réel, attendu, % tolérance, marge) | Détermine si la valeur réelle se situe dans les limites de tolérance correspondantes par rapport à la valeur attendue, si la différence entre les deux valeurs est supérieure à la marge. Si la valeur de la différence de pourcentage calculée est supérieure à la valeur de % tolérance ou de la Marge, la fonction renvoie 0. Dans le cas contraire, la fonction renvoie 1. Les valeurs calculées se basent sur les valeurs attendu et réel passées à la fonction.
Not(Value) | Renvoie 0 si Valeur est autre que zéro ou 1 si Valeur est 0. (Inverse logique) Exemples : Not(-12345) renvoie 0. Not(3.14) renvoie 0. Not(2-1) renvoie 0. Not(1-1) renvoie 1.
OneShot(valeur) | Renvoie vrai (1) si la dernière valeur d’entrée est vrai (différente de zéro) et la valeur d’entrée précédente est faux (0). Dans tous les autres cas, la fonction renvoie faux (0). Exemples : OneShot(A1) fait référence à la cellule A1 contenant une fonction booléenne. À la première exécution, la cellule A1 renvoie 0. OneShot(A1) renvoie 0. À la deuxième exécution, la cellule A1 renvoie 1. OneShot(A1) renvoie 1. OneShot(B2) fait référence à la cellule B2 contenant une fonction qui renvoie une plage de valeurs plus étendue. À la première exécution, la cellule B2 renvoie 12. OneShot(B2) renvoie 1. À la deuxième exécution, la cellule B2 renvoie 0. OneShot(B2) renvoie 0. Remarque : Selon la vitesse de déclenchement, les résultats de la fonction OneShot peuvent varier très rapidement. Cela peut signifier que la valeur de sortie n’est pas mise à jour à l’écran.
Or(Valeur1, Valeur2, ...) | Renvoie 0 si toutes les valeurs sont nulles ; sinon, renvoie 1. (OU logique le résultat est VRAI si l’une des valeurs est VRAIE). Exemples : Or(45, -77) renvoie 1. Or(-1, 0, 1) renvoie 1. Or(0, 1-1) renvoie 0.