f = lambda n:bin(n^n/2).count('1') for n in (0, 1, 42, 97, 170, 255, 682, 8675309, 4812390, 178956970, 2863311530): print '%10d -> %2d' % (n, f(n))
Standard input is empty
0 -> 0
1 -> 1
42 -> 6
97 -> 3
170 -> 8
255 -> 1
682 -> 10
8675309 -> 11
4812390 -> 14
178956970 -> 28
2863311530 -> 32