您的位置:首页 > Web前端

剑指offer 10. 二进制中1的个数

2017-05-15 15:50 253 查看
// 题目:输入一个数,判断这个数中1的个数
// 解法1:n与(n-1)进行与操作就会使n的最右边一个1变成0
public class Main {

public static void main(String[] args) {
System.out.println(countN(0));
}

public s
4000
tatic int countN(int num){
int result = 0;
while(num!=0){
num = num&(num-1);									//n与(n-1)进行与操作就会使n的最右边一个1变成0
result++;
}
return result;
}

}

//解法2:使用一个1与每一位进行与运算,每出现一次结果为1,出现1的次数就加一
public class Main {

public static void main(String[] args) {
System.out.println(countN(-3));
}

public static int countN(int num){
int temp = 1;
int result = 0;
while(temp != 0){										//当temp的位数超过32位再左移时,temp就是变为0
if((num & temp) != 0){
result++;
}
temp = temp<<1;
}
return result;
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: