以下は 16 進値 0x12345678 で、バイナリとして書き込まれ、いくつかのビット位置で注釈が付けられています。
|31 24|23 16|15 8|7 ビット 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 0 0 0|
+--------------+---------------+---------------+- --------------+
...そしてここに 0x000000FF があります:
+--------------+---------------+---------------+- --------------+
|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|
+--------------+---------------+---------------+- --------------+
したがって、ビットごとの AND は、元の値の下位 8 ビットのみを選択します。
+--------------+---------------+---------------+- --------------+
|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|
+--------------+---------------+---------------+- --------------+
...そして、24 ビット左にシフトすると、下位 8 ビットから上位に移動します。
+--------------+---------------+---------------+- --------------+
|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|
+--------------+---------------+---------------+- --------------+
...16 進数で 0x78000000 です。
他の部分は、入力の残りの 8 ビット部分で動作します。
0x12345678
& 0x000000FF
----------
0x00000078 << 24 = 0x78000000 (上記参照)
0x12345678
& 0x0000FF00
----------
0x00005600 << 8 = 0x00560000
0x12345678
& 0x00FF0000
----------
0x00340000 >> 8 = 0x00003400
0x12345678
& 0x00000000
----------
0x12000000 >> 24 = 0x00000012
| | ----------
0x78563412
したがって、全体的な効果は、32 ビット値ldataを 4 つの 8 ビット バイトのシーケンスと見なし、それらの順序を逆にすることです。