`

n&(n-1)

 
阅读更多
为奇数(n的二进制表示的末位为1):
n:       xxxxxxxx1
n-1:     xxxxxxxx0
n&(n-1): xxxxxxxx0
相当于去掉最右边的一个1。

n为偶数且不等于0(n的二进制表示的末位为0):
n:       xxxxx1000
n-1:     xxxxx0111
n&(n1-): xxxxx0000
也是相当于去掉最右边的一个1。

所以,程序的效果就是统计传入的参数的二进制表示中1的个数。

如,9999 的二进制表示为: 0010 0111 0000 1111,共有8个1.
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics