def count_bits(num):
    it = [num]
    x = []
    while True:
        f, it[0] = cikl(it[0])
        x.append(f)
        print(x[0], it[0])
        if it[0] == 1:
            x.append(1)
            break
        elif it[0] == 0:
            x.append(0)
            break
    return sum(x)


def cikl(num):
    new_num = 0
    x = 0
    if num == 1:
        new_num = 1
        x = 1
    elif num == 0:
        new_num = 0
        x = 0
    elif num >= 2:
        if num % 2 == 1:
            new_num = int((num - 1) / 2)
            x = 1
        elif num % 2 == 0:
            new_num = int(num / 2)
            x = 0
    return x, new_num

print(count_bits(40))

def count_bits2(num):
    return bin(num).count('1')

print(count_bits2(40))