Réponse acceptée !
Hello,
il y a deux choses dans ce code auxquelles bcp de codeurs PHP ne sont pas habitués. << et & << est un décalage de bit vers la gauche. Chaque décalage revient à multiplier par 2 l'argument de gauche. & est l'opérateur bit à bit AND : tous les bits à 1 à gauche et à droite de l'opérateur sont à 1.
Si $rbits = 4, alors ton if() sera vrai quand $i = 2. 4 = 100 (en binaire) et 1 << 0 = 0 1 << 1 = 10 1<< 2 = 100 et 100 & 100 = 100, et 100 (= 4) est bien != 0.
Note que si 1<<$i pouvait être égal à 5 par exemple (mais c'est impossible puisque 5 n'est pas un multiple de 2, sauf si $i n'est pas un entier mais un float : 2.5 par exemple), alors ton if() serait encore vrai : 1<<2.5 = 110 4 = 100 toujours et 100 & 110 = 100, ce qui est encore une fois différent de 0.
|