Syntaxe
Calcule sur les bits des nombres entiers : && et, || ou, ~~ ou exclusif, ! inverse tous les bits, << et >> décalent.
<a> && <b>
<a> || <b>
<a> ~~ <b>
!<a>
<a> << <n>
<a> >> <n>S’écrit aussi : &&, ||, ~~, !, <<, >>
Les éléments
| <a> | Un nombre, traité comme un entier signé sur 32 bits. Les décimales sont perdues : 3.7 || 0 vaut 3. |
|---|---|
| <b> | Un nombre, traité comme un entier signé sur 32 bits. |
| <n> | Le nombre de positions de bits à décaler. >> garde le signe : -16 >> 2 vaut -4. |
À savoir
- Les symboles sont bit à bit et les mots sont logiques.
&&n'est pasAND, et||n'est pasOR. C'est l'inverse du C et du JavaScript. - Un test de bit demande des parenthèses :
&&passe après=, doncflags && 4 = 4signifieflags && (4 = 4). Écrivez(flags && 4) = 4, ou simplementIF flags && 4 THEN. - Les résultats sont signés sur 32 bits :
1 << 31vaut -2147483648, et!5vaut -6. XORn'existe pas : il se compile, mais le programme ne démarre pas. Écrivez~~.- Un
&seul ne concatène pas :"a" & "b"donne 0. Assemblez les chaînes avec+. - Dans une condition
#IF,&&,||et!sont les mots logiques, pas ces opérateurs. - Les littéraux binaires s'écrivent
%1010, les hexadécimaux0xFF. Les drapeaux d'unENUMERATIONBINARYse combinent avec||.
Exemple
flags = %1100Console(Str(flags && %1010)) ' 8Console(Str(flags || %0011)) ' 15Console(Str(flags ~~ %1010)) ' 6Console(Str(!0)) ' -1Console(Str(1 << 4)) ' 16Console(Str(-16 >> 2)) ' -4IF (flags && 4) = 4 THEN Console("bit set") ' bit setDans le manuel : Constantes et opérateurs