本文共 731 字,大约阅读时间需要 2 分钟。
逐位判断是否是1。
public class Solution { //java中int负数的二进制就是用补码来表示的 public int NumberOf1(int n) { if (n == 0) { return 0; } int num = 0; int flag = 1; while (flag != 0) { if((n & flag) != 0) { num++; } flag = flag << 1; } return num; }}
public static int numberOfOne2(int n) { // 记录数字中1的位数 int result = 0; // 数字的二进制表示中有多少个1就进行多少次操作 while (n != 0) { result++; // 从最右边的1开始,每一次操作都使n的最右的一个1变成了0, // 即使是符号位也会进行操作。 n = (n - 1) & n; } // 返回求得的结果 return result; }