例如:输入整数n,对应求法如下
for(c=0; n; ++c){
n&=(n-1);
}
return c
n&=(n-1)是清除n最右边的1,如(1000)= 7(0111)+ 1(0001),所以8 & 7 = (1000)&(0111)= 0(0000),清除了8最右边的1
例如:输入整数n,对应求法如下
for(c=0; n; ++c){
n&=(n-1);
}
return c
n&=(n-1)是清除n最右边的1,如(1000)= 7(0111)+ 1(0001),所以8 & 7 = (1000)&(0111)= 0(0000),清除了8最右边的1