Emploi

8. Etat d'un système.
On a souvent besoin de savoir si quelque chose est vrai ou faux, exemple : le système est-il initialisé ?
systemInit = False (Faux)
.....Initialisation du système
systemInit = True (Vrai)
A un autre moment dans le programme on pourra tester :

Si systemInit = True (if systemInit = true)

Sinon (else)

9. Stocker des paramètres
Exemple : Touches de modification clavier (Shift, Control, Alt, etc..)
Affectons une variable
modifClavier
Voyons la en binaire en nous limitant aux 4 premiers bits.
bit 3, bit 2, bit 1, bit 0
Pour symboliser l'état des touches nous décidons que 0 signifiera touche relachée et 1 enfoncée.
Nous pouvons décider que le bit 0 sera affecté à la touche Shift, le bit 1 à Control, le bit 2 à Alt, le bit 3 à Alt Gr.
Pour tester si une touche est enfoncée ou non nous définirons un masque pour cette touche, chiffre binaire avec un 1 à l'emplacement du bit définissant l'état de la touche, pour Control le masque sera 0010B, pour Alt 0100B etc...
Dans la plupart des cas le masque sera exprimé par un nombre décimal, dans l'exemple ci dessus 1 pour Shift, 2 pour Control, 4 pour Alt et 8 pour Alt Gr.
Test de l'état de la touche Control, on fait un ET entre la variable modifClavier et le masque control (ici 2) :
etatControl = modifClavier & 2
Suivant les systèmes on obtiendra dans etatControl ou 0 ou 1, ou Faux ou Vrai.
On pourra écrire (à la syntaxe du langage de programmation près) :
Si ((modifClavier & 2) & (modifClavier & 3))
Cette proposition est vrai si les touches Control et Alt sont enfoncés en même temps.

10. Exemple JavaScript :
Emploi d'une variable permettant de choisir les pages à charger en fonction du navigateur du consultant et de la langue de celui ci. Ceci fonctionne dans un appel de Frames, cela s'appliquerait de la même façon si cette variable était inscrite sous la forme d'un Cookie,(pour les pages non framées).
Variable état;
//bit 4 Numéro de révision du navigateur si supérieur a 3(Non utilisé pour l'instant)
//bit 3 Numéro de révision du navigateur 2 (0), 3 (1)
//bit 2 Type du navigateur Netscape (0), Internet Explorer (1)
//bit 1 Langue Anglais (0), Francais (1)
//bit 0 Non utilisé

var état=0 //Définition d'une variable dans l'appel des frames

/* Affectation d'une valeur à la variable dans une des frames appelées, ceci explique le "parent.etat" */
if (navigator.appName.lastIndexOf("Netscape") != -1){ //c'est Netscape

Ensuite on trouverait les else pour les autres cas de navigateurs.
Choix de la langue de consultation, ce sous programme est sur une page en anglais, sa fonction est de mettre le bit 1 à 1:
function Langue() {

Utilisation de la variable, en fonction du navigateur on va charger un menu, ici menuEnNetV3 comporte des load d'images dans une frame et une option VRML, tout ceci nécessitant Netscape version 3 (pour le moment) :
Mask=12 ;

11. Bascule
Soit une variable varBascule comportant deux bits :
bit 1 Transmission Cable (0), Radio (1)
bit 0 Success Non (0), Oui (1)
Ces bits ne peuvent avoir que deux états entre lesquelles ils basculent.
Si on fait un Ou exclusif (XOR), entre la valeur actuelle d'un de ces bits, extraite à l'aide d'un masque, et 1, on inversera la valeur de ce bit.
Si bit 1 est à 0 (Cable), 0 XOR 1 = 1 en effet les deux variable sont différentes, le résultat est VRAI (1)
Si bit 1 est à 1 (Radio) 1 XOR 1 = 0 en effet les deux variable sont semblables, le résultat est FAUX (0).
On pourrait écrire :
if (varBascule ET 0) (on teste success=Faux)

Le masque de comparaison se présente sous la forme 0...00010, le OU exclusif se fait bit a bit, avec les 0 du masque cela laisse le bit inchangé, avec le 1 cela bascule la valeur.