如何一求个整数的二进制数中1的个数

来源:互联网 发布:淘宝网历任总裁 编辑:程序博客网 时间:2024/05/18 06:50

1、使用位移

        while (temp>0) {            if ( (temp & 1) == 1 ) {                //temp & 1如果re最低位是1,则结果等于1                //TODO            }            temp = temp >> 1;//向右移位        }

2、使用 &

    while(temp) {        //TODO 计数器+1        temp &= (temp - 1);    }

temp &= (temp - 1)将 temp 的二进制表达中最右边的1(包括1)后面的位变成0;

ex:temp     = 01001000temp - 1 = 01000111temp & (temp - 1) = 01000000