【100题】判断一个数的二进制形式有几个1

来源:互联网 发布:天津大数据 编辑:程序博客网 时间:2024/05/03 15:27
//判断一个数的二进制形式有几个1#include <iostream>using namespace std;int bxy(int i){int count = 0;while(i != 0){if(i%2 == 1){count++;}//右移一位i = i/2;}return count;}void main(){//1100101int i = 101;cout << bxy(i)<<endl;}
下面改用位运算,效率更高!
#include <iostream>using namespace std;int bxy(int i){int count = 0;while(i != 0){if(i & 1 == 1){count++;}//右移一位i = i >> 1;}return count;}void main(){//1100101int i = 101;cout << bxy(i)<<endl;}

当i<0上面的方法就完蛋了,死循环了


#include <iostream>using namespace std;int bxy(int i){int count = 0;//无符号数,遍历:1->2->4->...->2^32->0unsigned int flag = 1;while(flag){if(i&flag){count++;}flag = flag << 1;}return count;}void main(){//32int i=-1;cout << bxy(i) <<endl;}


 

 

#include <iostream>using namespace std;int bxy(int i){int count=0;while(i){++count;i = (i-1)&i;}return count;}void main(){cout << bxy(-1)<<endl;}