普通方法
int countOnes(int num) {
// write your code here
int count = 0;
for(int i = 0;i<32;i++)
{
if((num & 1) == 1)
count++;
num >>= 1;
}
return count;
}
简练代码
//int countOnes(int num)
//{
// int count = 0;
// for(int i =0;i<32;i++)
// {
// count+=(num&1);
// num >>= 1;
// }
// return count;
//}
快速法
循环只有count(1的个数)次,就是每次将最低位的1直接去除。但是只适用于正数。
int countOnes(unsigned num)
{
unsigned int i = 0;
for(i;num;i++)
{
num = num & (num-1);
}
rerturn i;
}