去除掉二进制最右边的一个1. n&(n-1)
/**
* 输入一个整数,输出该数32位二进制表示中1的个数。其中负数用补码表示。
* @param n 整数
* @return 1的个数
*/
public int NumberOf1(int n) {
int res=0;
while(n!=0){
res++;
n&=(n-1);
}
return res;
}



京公网安备 11010502036488号