LeetCode-二进制中1的个数

bit操作

知识点

  1. 一个整数除以2,与将这个整数右移1位等价,但是移位运算效率更高。
  2. 一个整数减一,后与原整数做‘与’运算,这个操作会把这个整数最右边的1变成零。

有了上述两点,求二进制中1的个数,思路就有了:

1
2
3
4
5
6
7
8
int numberOfOne(int num){
int count = 0;
while(num){
count++;
num = num & (num - 1);
}
return count;
}

此方法对正负整数均使用。