返回变量表示中设置为1的位数

时间:2017-03-26 16:01:10

标签: c variables integer 8-bit

假设我有一个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;
}

0 个答案:

没有答案