Euh... oui, effectivement, me suis mal expliquer pour le décallage de bits. :s
Par exemple, si on fait "int Toto = 8 >> 2;", on aura donc "Toto = 2;".
Explication :
8 = (1000)
Décaller de 2 bits vers la droite :
(1000) --> (0100) --> (0010) = 2
Donc Toto vaudras 2.
Si on décalle de 3 bits :
(1000) --> (0100) --> (0010) --> (0001) = 1
"8 >> 3 = 1"
Mais si on décalle de 4 bits :
(1000) --> (0100) --> (0010) --> (0001) --> (0000) = 0 (le bits à 1 disparait car il sort du champ "utile")
----------
Faisons un exemple.
Déclarons 2 char :
char TotoH = 0;char TotoB = 0;
Et un int :
int Toto;
Imaginons que l'on mette la valeur 0xF536 à Toto :
Toto = 0xF536;
C'est comme si qu'il avait cette valeur là en bits : (1111 0101 0011 1010)
Faisons cette ligne-là :
TotoH = Toto >> 8;
Nous avons donc 0xF536 décallé d'un octet vers la droite, ce qui nous donne : 0x00F5.
Donc :
Toto == 0xF536
TotoH == 0x00F5 (mais vu que c'est un char, ça deviens 0xF5)
TotoB == 0
Nous voyons donc que TotoH contient les bits de poids fort de Toto.
Celà nous permet donc de faire des tests directement avec TotoH au lieu de faire un masquage.
D'ailleurs, pour mon exemple, si on veux mettre que 0x36 dans TotoB (ce à quoi il est destiné), il faudrait utiliser les masquage. Si tu veux que je te l'explique, dis-le moi.
-----------
Donc, c'est ce que cette ligne de codes fait.
Je la rappelle :
unsigned char padHighbyte = pad.Buttons >> 8;
En regardant dant le fichier "pspCtrl.h", on peux voir que pad.Buttons est un unsigned int ayant la plus grande valeur comme 0x800000.
Les valeurs 0x001000, 0x002000, 0x004000 et 0x008000 désigne respectivement les touches Triangle, Rond, Croix et Carré.
Comme vu plus haut pour le décallage de bits, le mec décalle donc tous ces bits d'un octet vers la droite, ce qui nous donne : 0x000010, 0x000020, 0x000040 et 0x000080. Après, il met ça dans un "char", ce qui nous donne au final les valeurs : 0x10, 0x20, 0x40 et 0x80.
Maintenant, sa variable "padHighByte" représente l'état des touches Triangle, Rond, Croix et Carré.
J'ai était clair ?
(si ça l'est pas, ajoute moi à ton MSN si tu l'a, j'essayerais de te l'expliquer autrement )