【剑指offer】之二进制中1的个数

来源:互联网 发布:hshhsaaaws是什么软件 编辑:程序博客网 时间:2024/05/24 01:51

题目描述:

     输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。例如输入9,输出应该是2.


分析:有两种方法,第一种比较好想的到,第二种难一点。


java代码实现:

 

//第一种方法描述:为了不死循环,选择左移1,总共移32次判断整数的所有位的1的个数。private static int numberOfone(int num) {int number = 0;int flag = 1;while(flag != 0) {if((num & flag)!=0)number++;flag = flag<<1;}return number ;}//第二种方法描述:把一个整数减去1,在和原来整数做与运算,会把整数最右边的1变成0。以此类推。private static int numberOf1(int num) {int count = 0;while(num > 0) {count++;num = (num -1) & num ;}return count ;}

   

0 0