【编程题】二进制中1的个数(Java实现)
题目来源
剑指offer第11题
https://www.nowcoder.com/practice/8ee967e43c2c4ec193b040ea7fbb10b8?tpId=13&tqId=11164&rp=1&ru=/ta/coding-interviews&qru=/ta/coding-interviews/question-ranking
题目描述
输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。
题目解答
方法一,和二进制01及其左移后的值进行与
public class Solution {
public int NumberOf1(int n) {
int count=0;
int i=1;
while(i!=0){
if((n&i)!=0){
count++;
}
i=i<<1;
}
return count;
}
}
方法二,将自身与自身减一的值进行与
public class Solution {
public int NumberOf1(int n) {
int count=0;
while(n!=0){
count++;
n=(n)&(n-1);
}
return count;
}
}