C语言--计算二进制数中1的个数(&)

来源:互联网 发布:小鸭淘宝复制软件 编辑:程序博客网 时间:2024/05/02 00:15
//15//00001111>>1//00000111int count_bit(unsigned int value){int one = 0;while(value){if(value%2 == 1)one++;value = value >> 1;}return one;}
</pre><pre code_snippet_id="667937" snippet_file_name="blog_20150516_3_3073464" name="code" class="csharp">//x&1;  n += x &1; x>>=1;  //1111  & 0001 = 0001    n=1//0111  & 0001 = 0001      2//0011  & 0001 = 0001      3//0001  & 0001 = 0001      4int count_bit1(unsigned int x){ int n=0;  do    {   n += x &1;  x>>=1;   }  while (x!=0);  return (n);}

//x&(x-1)//1111  & 1110 = 1110//1110  & 1101 = 1100//1100  & 1011 = 1000//1000  & 0111 = 0000int count_bit2(unsigned int value){int count = 0;while(value){count++;value = value & (value-1);}return count;}


1 0