*<<N décale les bits de * à gauche de N bits, en paddant le trou avec des zéros.
1 est le nombre entier 1, codé en binaire 000....01
Donc, 1<<N est le décalage de 000...001 de N bits à gauche, donc, 0.000100..00 avec N zéros à la fin. C'est donc bien la mise à 1 du N-ème bit (je compte comme les informaticiens: en partant de zéro, aka le bit 0 est le bit le plus à droite).
D'où la remarque "initialiser avec des hexadécimaux? C'est peu pratique. Initialiser avec l'opérateur de décalage de bit est plus souple".
"ton post": de quel message parles-tu?
-----
Au fait
1 est le nombre entier 1, codé en binaire 000....01
Donc, 1<<N est le décalage de 000...001 de N bits à gauche, donc, 0.000100..00 avec N zéros à la fin. C'est donc bien la mise à 1 du N-ème bit (je compte comme les informaticiens: en partant de zéro, aka le bit 0 est le bit le plus à droite).
D'où la remarque "initialiser avec des hexadécimaux? C'est peu pratique. Initialiser avec l'opérateur de décalage de bit est plus souple".
"ton post": de quel message parles-tu?
-----
Au fait
Code PHP :
<?php
return (!((int)$right & $this->operator)) ? false : true;
C'est assez moche (mais juste). Je préfère
Code PHP :
<?php
return ((bool)($right & $this->operator))