假设我有一个8位变量表示的无符号整数。 我想写一个函数,它返回变量表示中设置为1的位数。 例如,如果数字为1,则函数应返回1;如果数字为1,则函数应返回2.让我们说5。 我怎样才能做到这一点?我在这个网站上查看了其他问题,但没有找到我的问题或类似问题的明确答案。
提前致谢。
更新
#include <stdio.h>
#include <stdlib.h>
int NumberOfSetBits(int i)
{
i = i - ((i >> 1) & 0x55555555);
i = (i & 0x33333333) + ((i >> 2) & 0x33333333);
return (((i + (i >> 4)) & 0x0F0F0F0F) * 0x01010101) >> 24;
}
int main(){
printf("%d\n",NumberOfSetBits(4));
return 0;
}