public class Solution { public int hammingWeight(int n) { int ret = 0; for (int i = 0; i < 32; i++) { if ((n & (1 << i)) != 0) { ret++; } } return ret; }}思绪2
使用 n & (n−1) 把 n 的二进制位中的最低位的 1 变为 0
然后不停让当前的 n 与 n−1 做与运算,直到 n 变为 0 即可。
public class Solution { public int hammingWeight(int n) { int ret = 0; while (n != 0) { n &= n - 1; ret++; } return ret; }}