位运算:对二进制进行操作的运算方式
与运算:有0得0
或运算:有1得1
异或运算:相同为0、不同为1取反
左移、右移
交换律: x^y=y ^x 结合律: x ^(y ^z)=(x ^y)^z 自反性: x^x=0
零元素: x^0=x 逆运算: x^y =z,则有z^y=x(两边同时异或y,抵消掉)
每次左移一位,相当于乘上2
每次右移一位,相当于除以2
判断是否为2的若干次方: 判断x&(x-1)是否等于0
因此2的若干次方二进制表示中只存在一个1,上述一定成立,并且上述成立时说明只有一个1
获取x的最低位的1: Lowbit(x)= x&(-x)
x=int(input())
ans = 0
for i in range ( 32):
if(x >>i) & 1:
ans+=1
print(ans)