输入一个整数,求该整数的二进制表达中有多少个1。例如输入10,由于其二进制表示为1010,有两个1,因此输出2。

来源:互联网 发布:非主流文化 知乎 编辑:程序博客网 时间:2024/05/08 18:31

题目:输入一个整数,求该整数的二进制表达中有多少个1。例如输入10,由于其二进制表示为1010,有两个1,因此输出2。

利用位运算~第二种思路很赞....

?
#include<iostream>
usingnamespacestd;
int count_one_1(int num){        
    intcnt=0;
    //unsigned int i=1;
    inti=1;
    while(i){         
        if(num&i) cnt++;
        i=i<<1;
    }
    returncnt;
}
int count_one_2(int num){      //很赞的方法
    intcnt=0;
    while(num){
        num=num&(num-1);      //101 & 100 = 100; 100 & 011=0;
        cnt++;
    }
    returncnt;
}
int main(void){
    intnum;
    while(cin>>num){
        cout<<"solution1:"<<count_one_1(num)<<endl;
        cout<<"solution2:"<<count_one_2(num)<<endl;
    }
    system("pause");
    return0;
}

int countOf1(int n) {
    int c = 0;
    if (n<0) { c++; n = n & (1<<(sizeof(int)*8-1)); }
    while (n!=0) {
      c+=tab[n&0xff];
      n >>= 8;
    }
    return c;
}

0 0
原创粉丝点击