位运算基础案例,二进制位运算符 a >> n 等同于 a // 2^n , 反之 a << n 等同于 a * 2^n,即为在二进制末尾补零。
‘与’运算 a & b:二者的二进制表示中的相同位置处都为1时运算后的数为1,如
7 => 111, 2 => 10,二者倒数第二个位置都为1,其他位置都不满足条件为0,因此 7 & 2 = ‘010’ = 2,同理求 某一整数n的二进制表达中有几个1,可用 n & 1 来计算,每运算更新一次, 对 n >>= 1 位运算处理,效果为消去二进制表示中的最后一位,如 7 >> 1 = 3 的过程为 111 --> 11,也等同于 7 // 2 = 3。

while True:
    try:
        n = int(input())
        count = 0
        while n:
            count += (n & 1)
            n >>= 1
        print(count)
    except:
        break