二进制整数中1的个数

来源:互联网 发布:美国大学排名 知乎 编辑:程序博客网 时间:2024/05/16 15:09

两种解法:

第一种:

为了避免死循环, 可以让num和1按位与,判断最低位是不是1,然后让1左移再与num按位与 判断次低位是不是1,然后按照这种模式一直循环 ,直到1左移32次截止;这种方法不会死循环,可以正确判断出正数和负数中1的个数,但是不论数字大小均要循环操作32次,效率不高。

代码:

//int NumberOf1(int num)//{//int FLAG = 1;//int count = 0;////while(FLAG)//{//if(num & FLAG)//count++;//FLAG <<= 1;//}//return count;//}

第二种:方便高效

int NumberOf1(int num){int count = 0;while(num){num = num & (num - 1);count++;}return count;}int main(){cout << NumberOf1(-10) << endl;return 0;}


原创粉丝点击