6 et 5 sont des nombres entiers décimaux (base 10) mais quand on fait des comparaisons dites 'bits à bits', il faut les voir sous leur forme binaire (base 2) 6 en base 2 s'écrit 110 (soit 2^2 + 2^1 + 0^0 = 4 + 2 + 0) On dit que les bits de 6 sont, du bit de poids fort au bit de poids faible, 1, 1 et 0. 5 en base 2 s'écrit 101 (soit 2^2 + 0^1 + 2^0 = 4 + 0 + 1) Les bits de 5 sont donc 1, 0 et 1. Comparer 'bit à bit' 6 et 5, c'est comparer respectivement chaque bit de poids équivalent. La fonction Boole retourne la somme des décimaux correspondants à chaque bit. Boole 1 (AND) : les deux bits doivent être à 1
| binaire | décimaux
6 | 1 | 1 | 0 | 4 + 2 + 0 = 6
5 | 1 | 0 | 1 | 4 + 0 + 1 = 5
boole 1 | 1 | 0 | 0 | 4 + 0 + 0 = 4 Boole 2 : le premier bit doit être à 1 et le second à 0 | binaire | décimaux
6 | 1 | 1 | 0 | 4 + 2 + 0 = 6
5 | 1 | 0 | 1 | 4 + 0 + 1 = 5
boole 2 | 0 | 1 | 0 | 0 + 2 + 0 = 2 Boole 4 : le premier bit doit être à 0 et le second à 1 | binaire | décimaux
6 | 1 | 1 | 0 | 4 + 2 + 0 = 6
5 | 1 | 0 | 1 | 4 + 0 + 1 = 5
boole 4 | 0 | 0 | 1 | 0 + 0 + 1 = 1 Boole 6 (XOR ou exclusif) : un et un seul des deux bits doit être à 1 (combinaison des deux précédents 2 + 4 = 6) | binaire | décimaux
6 | 1 | 1 | 0 | 4 + 2 + 0 = 6
5 | 1 | 0 | 1 | 4 + 0 + 1 = 5
boole 6 | 0 | 1 | 1 | 0 + 2 + 1 = 3 Boole 7 (OR) ou inclusif : le premier bit et/ou le second bit doivent être à 1 | binaire | décimaux
6 | 1 | 1 | 0 | 4 + 2 + 0 = 6
5 | 1 | 0 | 1 | 4 + 0 + 1 = 5
boole 1 | 1 | 1 | 1 | 4 + 2 + 1 = 7 En programmation les codes binaires sont très utilisés parce qu'ils permettent de stocker à l'aide d'un seul nombre entier plusieurs possibilités d'états différents. Par exemple AutoCAD stocke les accrochages aux objets actifs dans la variable système osmode sous la forme d'un nombre entier. Extrait de l'aide : Définit les accrochages aux objets actifs
Le paramètre est stocké sous forme de code binaire en utilisant la somme des valeurs suivantes :
0 AUCun
1 EXTREmité
2 MILieu
4 CENtre
8 NODal
16 QUAdrant
32 INTersection
64 INSertion
128 PERpendiculaire
256 TANgente
512 PROche
1024 Annule tous les accrochages aux objets.
2048 Intersection apparente
4096 EXTEnsion
8192 PARallèle
[...]
Quand les accrochages aux objets sont désactivés à l'aide du bouton Accrobj de la barre d'état, le code binaire
16384 (0x4000) est renvoyé, en plus de la valeur normale d'OSMODE. Cette valeur supplémentaire permet aux
développeurs de distinguer ce mode des modes d'accrochage aux objets désactivés à partir de la boîte de dialogue
Paramètres de dessin. Si vous affectez une valeur à ce bit, les modes d'accrochage aux objets actifs sont
désactivés. Attribuer une valeur à OSMODE alors que ce bit est désactivé active les modes d'accrochage aux objets
actifs. Exemple (Boole 1 (getvar 'osmode) 3)ou (logand (getvar 'osmode) 3)retournera 3 (2 + 1) si les accrochages extrémité et milieu sont activés, 1 si extrémité est activé mais pas milieu, 2 si milieu est activé et pas extrémité et 0 si aucun des deux n'est activé. (setvar 'osmode (boole 7 (getvar 'osmode) 16384))ou (setvar 'osmode (logior (getvar 'osmode) 16384)) ajoute 16384 à la valeur actuelle de osmode si ce bit n'est pas déjà present ce qui équivaut au F3 pour désactiver les accrochages actifs. (Boole 7 47 16384) retourne 16431 (16384 est ajouté) (Boole 7 16431 16384) retourne aussi 16431 (16384 n'est pas ajouté) Pour réactiver les accrochages, il faut soustraire 16384, mais seulement si ce bit est présent. On utilise alors l'opérateur de bit NOT (ou complément à 1) avec (Boole 1 ...) (ou logand) (Boole 1 16431 (~ 16384)) retourne 47 (16384 est soustrait) (Boole 1 47 (~ 16384)) retourne aussi 47 (16384 n'est pas soustrait) Le ou exclusif XOR peut être utilisé pour des bascules : (Boole 6 (getvar 'orthomode) 1)active le mode orthogonal s'il n'était pas activé ou le désactive s'il l'était. PS : pour une bascule entre 0 et 1, la fonction 1- fait aussi très bien l'affaire.