python位运算
查找输入整数二进制中1的个数
http://www.nowcoder.com/questionTerminal/1b46eb4cf3fa49b9965ac3c2c1caf5ad
位运算基础案例,二进制位运算符 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