一个整数二进制位中1的个数

来源:互联网 发布:淘宝店营销推广技巧 编辑:程序博客网 时间:2024/05/17 23:00
//方法一:#include<iostream>using namespace std;int CountOf1(int val) {    int count = 0;    unsigned int n = 1;    while (n)          //二进制中有多少位则遍历多少次    {                         if ( n & val) //1每次左移一位,再和val相与,判断val对应位上是否为1            count++;        n = n << 1;    }    return count;}int main(){    cout<<CountOf1(-9)<<endl;    system("pause");    return 0;}//方法二:#include<iostream>using namespace std;int CountOf1(int val){    int count = 0;    while (val)//二进制中有几个1则遍历几次    {        ++count;        val = (val - 1)&val;//一个整数减去1,再和原整数相与,会把该整数的最右边一个1变成0;    }                      // eg:1100  1100-1=1011 1011&1100==1000    return count;}int main(){    cout << CountOf1(-9) << endl;    system("pause");    return 0;}
阅读全文
0 0
原创粉丝点击