逐位相与(Bitwise AND)是一种二进制位运算,用于将两个数字的每一位进行逻辑与操作。具体操作规则如下:
1. 如果两个相应的二进制位都为1,则结果位为1。
2. 如果两个相应的二进制位有一个为0,则结果位为0。
逐位相与可以用以下步骤进行计算:
1. 初始化一个计数器变量 `res` 为0,用于统计结果中1的个数。
2. 使用一个循环,每次循环中:
将数字 `n` 与1进行按位与操作,如果结果为1,则计数器 `res` 加1。
将数字 `n` 无符号右移一位(即 `n >>= 1`)。
3. 当 `n` 变为0时,循环结束。
4. 返回计数器 `res` 的值,即为 `n` 中1的个数。
```python
class Solution:
def hammingWeight(self, n: int) -> int:
res = 0
while n:
res += n & 1
n >>= 1
return res
```
这个算法的时间复杂度是O(log n),其中n是输入数字的位数。