est ici une valeur hexadécimale, 0x12345678, écrit sous forme binaire, et annoté avec des positions de bits:
|31 24|23 16|15 8|7 bit 0|
+---------------+---------------+---------------+---------------+
|0 0 0 1 0 0 1 0|0 0 1 1 0 1 0 0|0 1 0 1 0 1 1 0|0 1 1 1 1 0 0 0|
+---------------+---------------+---------------+---------------+
... et voici 0x000000FF:
+---------------+---------------+---------------+---------------+
|0 0 0 0 0 0 0 0|0 0 0 0 0 0 0 0|0 0 0 0 0 0 0 0|1 1 1 1 1 1 1 1|
+---------------+---------------+---------------+---------------+
Ainsi bitwise et sélectionne seulement les 8 bits inférieurs de la valeur d'origine:
+---------------+---------------+---------------+---------------+
|0 0 0 0 0 0 0 0|0 0 0 0 0 0 0 0|0 0 0 0 0 0 0 0|0 1 1 1 1 0 0 0|
+---------------+---------------+---------------+---------------+
... et décalant la gauche de 24 bits, il se déplace à partir des 8 bits inférieurs vers le haut:
+---------------+---------------+---------------+---------------+
|0 1 1 1 1 0 0 0|0 0 0 0 0 0 0 0|0 0 0 0 0 0 0 0|0 0 0 0 0 0 0 0|
+---------------+---------------+---------------+---------------+
... qui est 0x78000000 en hexadécimal.
Les autres parties travaux sur les portions de 8 bits restants de l'entrée:
0x12345678
& 0x000000FF
----------
0x00000078 << 24 = 0x78000000 (as shown above)
0x12345678
& 0x0000FF00
----------
0x00005600 << 8 = 0x00560000
0x12345678
& 0x00FF0000
----------
0x00340000 >> 8 = 0x00003400
0x12345678
& 0x00000000
----------
0x12000000 >> 24 = 0x00000012
| ----------
0x78563412
sorte que l'effet global est de considérer la valeur 32 bits ldata
comme une séquence de quatre octets de 8 bits, et inverser leur ordre.
1. vous n'avez pas besoin du \ à la fin de lignes. 2. Est-ce que je sens les devoirs? Si oui, veuillez marquer en conséquence –
@Armen: Je suspecte que le début de la première ligne est "#define"; Comment est-ce que le marquage [travail à domicile] vous aiderait à mieux répondre à cette question? –
@Roger: Ce ne serait pas. C'est juste une coutume dans SO d'étiqueter les questions de devoirs avec le tag –