Каков результат макроса? - PullRequest
0 голосов
/ 26 ноября 2010

Может ли кто-нибудь сказать мне, что является результатом следующего макроса с объяснением.идентификатор 32 бит

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

1 Ответ

4 голосов
/ 26 ноября 2010

Тасует биты id следующим образом:

  • биты 27-31 содержат исходные биты 0-4
  • биты 16-23 содержат оригинальные биты 5-12
  • биты 8-15 содержат оригинальные биты 13-20
  • биты 0-7 содержат исходные биты 21-28

Чтобы узнать цель этого, вам нужно взглянуть на более широкое назначение кода.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...