牛客网(java实现)
问题描述:
输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。
问题分析:
(用位运算实现)
不断清除n的二进制表示中最右边的1,同时累加计数器,直至n为0
算法实现:
略
参考代码:
public class Solution {
public int NumberOf1(int n) {
int sum = 0;
if (n == 0)
return 0;
while (n != 0)
{
sum++;
n = n&(n-1);
}
return sum;
}
}