宏的结果是什么?

时间:2010-11-26 01:30:26

标签: c

有人能告诉我以下宏的结果是什么,并附有解释。 id是32位

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

1 个答案:

答案 0 :(得分:4)

按如下方式对id的位进行随机播放:

  • 位27-31包含原始位0-4
  • 位16-23包含原始位5-12
  • 位8-15包含原始位13-20
  • 位0-7包含原始位21-28

要知道这个目的,你必须考虑更大的代码目的。