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 = 01001000
temp - 1 = 01000111
temp & (temp - 1) = 01000000