AND |
Et Binaire/Et Logique |
|---|---|
| MSX Basic Version 1.0 ou supérieur | |
Syntaxe
| a AND b |
Paramètres
| Nom | Description |
|---|---|
| a | Ce paramètre permet d'indiquer le nombre ou l'expression booléen contenant l'expression à traiter. a est une valeur comprise entre -32768 et 32767. Il peut également s'agir d'une variable numérique, d'une expression mathématique ou d'une expression d'une condition. |
| b | Ce paramètre permet d'indiquer le nombre ou l'expression booléen effectuant le masque sur la valeur. b est une valeur comprise entre -32768 et 32767. Il peut également s'agir d'une variable numérique, d'une expression mathématique ou d'une expression d'une condition. |
Description
Cet opérateur permet d'effectuer un «Et binaire» pour une valeur numérique ou «Et logique» dans le cas d'une comparaison.
Remarques
- Si vous utilisez des expressions binaires, il est préférable de mettre la première expression entre parenthèses afin d'éviter un bogue dans l'interpréteur provoquant une erreur de syntaxe. Ce problème ne se produit pas avec les expressions décimales, hexadécimales ou octales.
- Lorsque l'expression est exécutée dans une condition (IF...THEN...ELSE ou IF...GOTO...ELSE), si le résultat de l'expression entière est nul, la valeur est considérée comme fausse; sinon, elle est considérée comme vraie.
- L'opérateur AND en MSX-BASIC peut être utilisé de deux façons : comme un opérateur binaire ou comme un opérateur logique. Lorsqu'il est appliqué à des nombres, il réalise un ET binaire bit à bit. Lorsqu'il est utilisé dans des expressions conditionnelles (comme dans un IF), il agit comme un ET logique, retournant vrai seulement si les deux conditions sont vraies.
- L'opérateur AND permet de filtrer ou de comparer des bits spécifiques dans une valeur numérique. Par exemple, 15 AND 11 donne 11 car seuls les bits communs restent actifs. Cela est particulièrement utile pour créer des masques binaires afin de tester certains bits dans une donnée.
- Une particularité du MSX-BASIC est qu'un bogue de l'interpréteur peut provoquer une erreur de syntaxe si l'on n'entoure pas la première expression binaire entre parenthèses. Par exemple, PRINT &00001111 AND &11110001 provoque une erreur, tandis que PRINT (&00001111) AND &11110001 fonctionne correctement. Cette précaution est donc indispensable lorsqu'on travaille avec des valeurs binaires directes.
- Le résultat d'un AND binaire dépend entièrement de la représentation en bits des deux opérandes. Chaque bit du résultat est à 1 uniquement si les deux bits correspondants des opérandes sont à 1. C'est une règle fondamentale qui permet de comprendre comment des opérations comme 6 AND 13 = 4 fonctionnent.
- Lorsque AND est utilisé dans une instruction conditionnelle, le résultat est considéré comme faux si la valeur obtenue est 0. En MSX-BASIC, toute valeur différente de 0 est interprétée comme vraie. Ainsi, IF a AND b THEN n'exécutera le bloc suivant que si les deux expressions sont évaluées comme vraies.
- Les opérandes de l'opérateur AND peuvent être des expressions complexes, incluant des variables, des opérations mathématiques ou d'autres fonctions. Cela permet de construire des conditions puissantes ou des traitements binaires détaillés. Toutefois, cela demande une certaine rigueur pour éviter les erreurs de priorité.
- L'utilisation de l'AND logique permet de combiner plusieurs conditions dans une instruction IF. Par exemple, IF A > 0 AND B < 10 THEN PRINT "OK" ne s'exécutera que si les deux conditions sont satisfaites. C'est une manière efficace d'imposer plusieurs contraintes simultanées dans une branche logique.
- Le MSX-BASIC impose des bornes strictes aux opérandes de l'AND, entre -32768 et 32767, ce qui correspond à la plage des entiers signés sur 16 bits. Cela signifie que les résultats d'AND binaire restent compatibles avec les entiers courts, mais qu'il faut faire attention aux débordements dans certains cas.
Exemples
L'exemple suivant permet de faire un Et binaire entre 15 et 11 :
- PRINT 15 AND 11
on obtiendra le résultat suivant :
11Explication binaire :
|
1111 1011 AND ---- 1011 |
L'exemple suivant permet de faire un Et binaire entre 6 et 13 :
- PRINT 6 AND 13
on obtiendra le résultat suivant :
4Explication binaire :
|
0110 1101 AND ---- 0100 |
L'exemple suivant permet de faire un Et binaire entre 15 et 241 avec un bogue se manifestant parce qu'il n'y a pas de parenthèse :
- PRINT &00001111 AND &11110001
on obtiendra le résultat suivant :
15Syntax error
L'exemple suivant permet de faire un Et binaire entre 15 et 241 avec le premier paramètre entre parenthèse pour éviter l'erreur de syntaxe :
- PRINT (&00001111) AND &11110001
on obtiendra le résultat suivant :
1
Dernière mise à jour : Mardi, le 28 juillet 2015