Bonjour,
Quelq'un peut-il m'expliquer cette ligne ?
Merci
Code : Sélectionner tout - Visualiser dans une fenêtre à part int col = (in & 0xf) >> 2;
EDIT : si (in et 0xf) on décale à droite de 2 rangs
mais je vois pas l'intérêt...
Bonjour,
Quelq'un peut-il m'expliquer cette ligne ?
Merci
Code : Sélectionner tout - Visualiser dans une fenêtre à part int col = (in & 0xf) >> 2;
EDIT : si (in et 0xf) on décale à droite de 2 rangs
mais je vois pas l'intérêt...
Nan c'est pas une condition. Il faut pas confondre & et &&.
& est un opérateur logique bit-à-bit. Il calcule la condition ET pour tous les bits des deux opérandes, et produit un int dont les bits sont les résultats de ces ET.
Bref, quand on fait :
(in & 0xf) => on ne garde que les 4 bits de poids faible de in.
Explication : 0xf, c'est 0x10 - 0x1, soit en décimal 16 - 1, donc 15.
En binaire c'est 00010000 - 1 => 00001111
Bref, 0xf, 15, c'est le nombre qui a ses 4 derniers bits à 1, et les autres à 0.
Donc, quand on fait in & 0xf, on obtient un nombre dont tous les bits sont mis à zéros sauf les 4 derniers. Les 4 derniers sont les mêmes que ceux de in.
Reste le décalage à droite. Il fait oublier les 2 derniers bits, et on ne garde que les 3e et 4e.
Conclusion : col est un nombre composé de 2 bits, les 3e et 4e bits de in, en comptant à partir du poids le plus faible.
Réponse parfaite merci.
Partager