两种解法如下:
//第一种解法,
public class Solution {
/**
* @param num: an integer
* @return: an integer, the number of ones in num
*/
public int countOnes(int num) {
// write your code here
int count=0;
int flag=1;
while(flag!=0){
if((num & flag)!=0){
count++;
}
flag<<=1;
}
return count;
}
};
//第二种解法,
public class Solution {
/**
* @param num: an integer
* @return: an integer, the number of ones in num
*/
public int countOnes(int num) {
// write your code here
int count=0;
while(num!=0){
count++;
num=num&(num-1);
}
return count;
}
};
延伸:
判断一个数是不是2的整数次方。即num&(num-1)==0?true:false;
输入两个整数,计算需要改变m的二进制表示中的多少位才能得到n?
(1)将m,n做异或运算;
(2)计算异或的结果中1的个数。
即return countOnes(m^n);