链接:
https://www.nowcoder.com/questionTerminal/8ee967e43c2c4ec193b040ea7fbb10b8
来源:牛客网
来源:牛客网
- 热度指数:148694 时间限制:1秒 空间限制:32768K
输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。
分析:利用位运算&、>>>,&运算用法详见
快速幂应用,>>>运算表示无符号右移,忽略符号位,空位都以0补齐。使用&得到最末位数字,n&1 != 0判断末位数字是否为1,为1则计数ans加1,使用>>>运算把n的二进制忽略符号位右移一位,即去掉其二进制位忽略符号位的最低位。
public class Solution {
public int NumberOf1(int n) {
int ans = 0;
while(n != 0){
if((n&1)!=0)
ans++;
n >>>= 1;
}
return ans;
}
}