位运算
- 关于&的常识:1 & 1 = 1, 1 & 0 = 0;
- 关于 >> 向左移动一位。
import java.util.*;
public class Solution {
public int NumberOf1(int n) {
int res = 0;
for (int i = 0; i < 32; i++){
if ((n & (1 << i)) != 0){
res++;
}
}
return res;
}
}
优化。
有一个规律, n&(n−1),会将n的二进制中最低位由1变成0
import java.util.*;
public class Solution {
public int NumberOf1(int n) {
int res = 0;
while (n != 0){
n = n & (n - 1);
res++;
}
return res;
}
}