février
2009
Suite à des questions récurrentes, voici un petit mémo sur l’utilisation des opérateurs binaires pour gérer de simples flags.
Je ne rentrerai pas dans le détail, il existe de très bons tutoriel à ce sujet sur ce site.
Je soulignerai juste que ce que j’illustre ici en java est réalisable dans n’importe quel langage possédant les opérateurs binaires (OR, AND, et NOT).
L’exploitation la plus courante est donc la suivante :
- Placement d’un flag :
flagSet = flagSet | f; // Fixe le flag f dans flagSet
ou
flagSet |= f;
- Retrait d’un flag :
flagSet = flagSet & ~f; // Désactive le flag f dans flagSet
ou
flagSet &= ~f;
- Contrôle d’un flag :
if((flagSet & f) != 0) // Teste si le flag f est fixé dans flagSet
Il n’est pas rare de voir des fonctions codées pour assurer ce type de gestion car les opérateurs binaires font parfois « peur ».
A part dans un cadre d’encapsulation, je ne suis pas partisan dune telle solution. Ce mémo de quelques lignes tend à monter combien cette gestion est simple, et l’impact de fonctions sur des tests aussi rudimentaires peut avoir un impact sur les performances.
Je ne connaissais absolument pas !
merci bien :$