2010-11-26 1 views
0

誰も私の説明には、次のマクロの結果は教えてください。 IDは、32次のようにidのビットをシャッフルマクロの結果はどうなりますか?

#define ARBITR(id) ((unsigned long)(id) >> 21 & 0x000000ff | \ 
        (unsigned long)(id) >> 5 & 0x0000ff00 | \ 
        (unsigned long)(id) << 11 & 0x00ff0000 | \ 
        (unsigned long)(id) << 27) 
+1

gcc -Eはマクロを展開します – Mike

+1

@Mike:質問者は、マクロ展開の結果として得られる式が実際に何をしているのかを知りたがっていると思います。 –

+0

もちろん、私はちょうどチップを提供していた。だから私は完全な答えにそれを入れていないのです – Mike

答えて

4

ビット:

  • ビット27-31は、16〜23が元のビットを含む0-4
  • ビット元のビットを含みます5- 8-15は、元のビットを含む12の
  • ビット0-7は、元のビット21-28
を含む13-20
  • ビット

    この目的を知るには、コードの目的を大きく見なければなりません。

  • +2

    私の推測は、ハッシングマクロです。 – Kizaru

    関連する問題