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

来源:互联网 发布:mac怎么看硬盘文件 编辑:程序博客网 时间:2024/06/05 13:21
// 题目:输入一个数,判断这个数中1的个数// 解法1:n与(n-1)进行与操作就会使n的最右边一个1变成0public class Main {public static void main(String[] args) {System.out.println(countN(0));}public static int countN(int num){int result = 0;while(num!=0){num = num&(num-1);//n与(n-1)进行与操作就会使n的最右边一个1变成0result++;}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就是变为0if((num & temp) != 0){result++;}temp = temp<<1;}return result;}}

0 0
原创粉丝点击