F1.利用
import java.util.*;
public class Solution {
public int NumberOf1(int n) {
//定义计数变量
int count = 0;
//循环
while (n != 0){
//由于1的前31位都为0,最后一位为1,和n这个数字做与运算可以判断n的最后一位是0还是1,如果为1就计数
count += n&1;
//每次判断完之后,n无符号右移一位,(注意不能为有符号右移,有符号右移高位补1,会造成死循环)
n >>>= 1;
}
return count;
}
}
F2.为了避免右移操作时不注意使用了有符号右移的操作;
import java.util.*;
public class Solution {
public int NumberOf1(int n) {
int count = 0;
for (int i = 0; i < 32; i++) {
count += n&1;
n >>= 1;
}
return count;
}
}
F3.使用java自带的api
import java.util.*;
public class Solution {
public int NumberOf1(int n) {
return Integer.bitCount(n);
}
}