判断一个整数的二进制数里有几个1

来源:互联网 发布:称重收银软件 编辑:程序博客网 时间:2024/06/06 08:43
思路: 先把整数(十进制)转为二进制来处理吧,比如n=10,二进制为1010
方法1:最简单的当然是转成二进制后一位一位的比较。
int count = 0;
string a=Convert.ToString(n, 2);//C#的进制转化
a.ToCharArray();
for (int i=0;i<a.Length;i++)
{
if (a[i]=='1')
{
 count++;
}
}
return count;

方法2:与运算,这个比较神奇
int func(unsigned int n){
  int count=0;
  while(n>0){
    n=n&(n-1);
    count++;
  }
  return count;
}
比如输入10,n-1=9,1010(10的二进制)&1001(9的二进制),得到一个1000(8的二进制),n=8,count++=1
第二次循环,n-1=7,8&7=0,count++=2;跳出循环,返回count,也就是说10的二进制里面有2个1。。。。
阅读全文
0 0
原创粉丝点击