本文来自公众号 labuladong ,作者只是搬运和整理
一、位运算
n&(n-1) :消除数字 n 的二进制表示中的最后一个1
y=6&5
print(y) #y=4
#6=110 5=101 位与操作 1&1=1 1&0=0 0&1=0
ans=0 while n!=0: n=n & (n-1) ans+=1 return(ans)
题目要求返回 n 的二进制表示中有几个 1 ,而 n&(n-1) 可以消去最后一个1,循环消除1并记数即可
异或 :一个数和它本身异或为0,而与0异或为其本身
print(4 ^ 0) #4