剑指offer编程题Java实现——面试题10二进制中1的个数

来源:互联网 发布:优酷网络电影合作 编辑:程序博客网 时间:2024/05/22 00:27

题目:

请实现一个函数,输入一个整数,输出该整数二进制表示中1的个数。例如,把9表示成二进制是1001,有2位是1,该函数输出2
解法:把整数减一和原来的数做与运算,会把该整数二进制表示中的最低位的1变成0,与运算进行多少次就有多少个1。

 

复制代码
 1 package Solution; 2 /** 3  * 剑指offer面试题10:二进制中1的个数 4  * 题目:请实现一个函数,输入一个整数,输出该整数二进制表示中1的个数。 5  * 例如,把9表示成二进制是1001,有2位是1,该函数输出2 6  * 解法:把整数减一和原来的数做与运算,会把该整数二进制表示中的最低位的1变成0,与运算进行多少次就有多少个1 7  * @author GL 8  * 9  */10 public class No10BitOperation {11 12     public static void main(String[] args) {13         int number1=11;14         System.out.println("整数11的二进制中1的个数为:"+numberOfOne(number1));15         //Java中的int类型整数由4字节32位组成16         int number2=-11;17         System.out.println("整数11的二进制中1的个数为:"+numberOfOne(number2));18 19 20     }21     public static int numberOfOne(int number){22         int count=0;23         24         while(number!=0){25             count++;26             number=number&(number-1);27         }28         return count;29     }30 31 }
复制代码
0 0
原创粉丝点击