"""
Write a function that takes an unsigned integer and
returns the number of ’1' bits it has
(also known as the Hamming weight).

For example, the 32-bit integer ’11' has binary
representation 00000000000000000000000000001011,
so the function should return 3.
"""


def count_ones(n):
    """
    :type n: int
    :rtype: int
    """
    counter = 0
    while n:
        counter += n & 1
        n >>= 1
    return counter

"""
Write a function that takes an unsigned integer and
returns the number of ’1' bits it has
(also known as the Hamming weight).

For example, the 32-bit integer ’11' has binary
representation 00000000000000000000000000001011,
so the function should return 3.
"""


def count_ones(n):
    """
    :type n: int
    :rtype: int
    """
    if n < 0:
        return
    counter = 0
    while n:
        counter += n & 1
        n >>= 1
    return counter

Check if the input is negative
Check if the input is negative

As the comments mention, the code would work only for unsigned integers.
If a negative integer is provided as input, then the code runs into an
infinite loop. To avoid this, we are checking if the input is negative.
If yes, then return control before loop is entered.
