4D v16.3Opérateurs sur les bits |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
4D v16.3
Opérateurs sur les bits
Opérateurs sur les bits
Les opérateurs sur les bits s'appliquent à des expressions ou valeurs de type Entier long. Note : Si vous passez une valeur de type Entier ou Réel à un opérateur sur les bits, 4D la convertit en Entier long avant de calculer le résultat de l'expression. Lorsque vous employez des opérateurs sur les bits, vous devez considérer une valeur de type Entier long comme un tableau de 32 bits. Les bits sont numérotés de 0 à 31, de droite à gauche. Comme un bit peut valoir 0 (zéro) ou 1, vous pouvez également considérer une valeur de type Entier long comme une expression dans laquelle vous pouvez stocker 32 valeurs de type Booléen. Lorsque le bit vaut 1, la valeur est Vrai et lorsque le bit vaut 0, la valeur est Faux. Une expression utilisant un opérateur sur les bits retourne une valeur de type Entier long, à l'exception de l'opérateur Tester bit avec lequel l'expression retournée est du type Booléen. Le tableau suivant fournit la liste des opérateurs sur les bits et leur syntaxe :
Notes Le tableau suivant dresse la liste des opérateurs sur les bits et de leurs effets :
(1) Le tableau ci-dessous propose un exemple d'utilisation de chaque opérateur sur les bits :
(2) 4D exploite de nombreuses constantes prédéfinies. Le nom de certaines d'entre elles commence par "Bit" ou "Masque". C'est le cas des constantes incluses dans le thème Propriétés des ressources :
Ces constantes vous permettent de tester la valeur retournée par la fonction Get resource properties ou de définir la valeur à passer à _o_SET RESOURCE PROPERTIES. Les constantes dont le nom débute par “Bit” fournissent la position du bit que vous voulez tester, effacer ou fixer. Les constantes dont le nom débute par “Masque” sont des valeurs de type Entier long dans lesquelles seul le bit que vous voulez tester, effacer ou fixer est égal à 1. Si, par exemple, vous devez tester si une ressource (dont les propriétés sont stockées dans la variable $vlResAttr) est purgeable ou non, vous pouvez écrire : If($vlResAttr ?? Bit ressource purgeable) ` Est-ce que la ressource est purgeable? ou : If(($vlResAttr & Purgeable resource mask)#0) ` Est-ce que la ressource est purgeable? A l'inverse, vous pouvez utiliser ces constantes pour définir le même bit. Vous pouvez écrire : $vlResAttr:=$vlResAttr ?+Purgeable resource bit ou : $vlResAttr:=$vlResAttr |Purgeable resource bit (3) Vous voulez stocker deux valeurs entières dans un Entier long. Vous pouvez écrire : $vlLong:=($viIntA<<16)|$viIntB ` Stocker deux Entiers dans un Entier long Note : Soyez prudent lorsque vous manipulez des Entiers longs ou des Entiers avec des expressions qui combinent des opérateurs sur les bits et des opérateurs numériques. Le bit supérieur (bit 31 pour un Entier long, bit 15 pour un Entier) détermine le signe de la valeur (positif s'il est à 0, négatif s'il est à 1). Les opérateurs numériques utilisent ce bit pour détecter le signe d'une valeur, mais les opérateurs sur les bits n'en tiennent pas compte.
Voir aussi
Opérateurs
|
PROPRIÉTÉS
Produit : 4D
HISTORIQUE
UTILISATION DE L'ARTICLE
4D - Langage ( 4D v16) |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||