mask

"""
1. initialize res, mask
2. loop 32 bits, cnt cases any bit n& mask != 0, then move mask bit 1 forward 
3.  return cnt cases 
"""s
class Solution:
    def hammingWeight(self, n: int) -> int:
        # time O(1) space O(1)
        mask = 1 
        res = 0
        for i in range(32):
            res += (n & mask != 0)
            mask <<= 1 
        return res 

optimization : here only iterate 1 bits, solution above need to interate all bits

class Solution:
    def hammingWeight(self, n: int) -> int:
        # time O(1) space O(1)
        
        cnt = 0
        while n != 0:
            cnt += 1 
            n = n & (n-1)
        return cnt