Как реализовать Bitcount, используя только побитовые операторы?

Задача состоит в том, чтобы реализовать логику подсчета битов, используя только побитовые операторы. У меня все работает нормально, но мне интересно, может ли кто-нибудь предложить более элегантный подход.

Разрешены только побитовые операции. Никаких «если», «за» и т. Д.

int x = 4;

printf("%d\n", x & 0x1);
printf("%d\n", (x >> 1) & 0x1);
printf("%d\n", (x >> 2) & 0x1);
printf("%d\n", (x >> 3) & 0x1);

Спасибо.

12
задан skaffman 28 September 2010 в 17:54
поделиться