One minute
剑指Offer(Java实现)15题
面试题15:二进制中1的个数
- 题目:
- 请实现一个函数,输入一个整数,输出该数二进制表示中1的个数。 例如:把9表示成二进制是1001,有2位是1.因此如果输入9,则该函数输出2。
- 思路:
- 一个整数减去1,在和原数进行&运算,会把该整数最右边的1变成0。那么一个整数的二进制有多少个1,就可以进行多少次这样的操作。
- 例如:12的二进制为1100,1100-1=1011,1011&1100=1000; 这样,原1100中最右边的1变为了0;
/**
* @Author GJ1e
* @Create 2019/11/9
* @Time 21:13
*
*/
public class Solution15 {
public static int numberOf1(int n){
int count = 0;
while (n>0){
count++;
n = (n-1)&n; //能进行多少次就有多少个1
}
return count;
}
}
Read other posts