Brian Kernighan‘s way(寻找机器数中1的个数)

 原理:

使用&操作跳过对0的遍历,15(1111),15&14(1110),14&13(1100)...

代码实现:


#include
#include
int main()
{
    int input = 0;
    int count = 0;
    printf("请输入一个数:");
    scanf("%d", &input);
    while(input!=0)
    {
        input = input&(input-1);
        count++;
    }
    printf("count = %d\n", count);
    return 0;
}

 

你可能感兴趣的:(算法,Brian,Kernighan,机器数,1的数量)