快速法求得二进制中1的个数

快速法求得二进制中1的个数

这种方法速度较快,运算次数只与1的个数有关。原理是不断的清除n的二进制表示中最右边的1,同时累加计数器,直至n为0:

代码

C++:

#include <iostream>
using namespace std;
int bitcount(int x);
int main(int argc, char *argv[]) {
    cout<<"请输入数字:"<<endl;
    int x;
    cin>>x;
    int y = bitcount(x);
    cout<<"二进制中1的个数为:"<<y<<endl;
}
int bitcount(int x){
    int c=0;
    for(c = 0 ;x;++c){
        x&=(x-1);
    }
    return c;
}

版权声明:本文为qq_15097009原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。