27�Pyhon�学者

# -*- coding:utf-8 -*-

class Solution:
    def NumberOf1(self, n):
        # write code here
        cnt = 0
        if n<0:
            n = n & 0xffffffff
        while n:
            cnt+=1
            n = (n-1) & n
        return cnt

针对这一段代�,讲讲里�的细节,�对�白。

首先为什么� n=n&0xffffffff,0xffffffff 表示 32 个 1,�这一个步骤是为了让 n 显示 32 �,�则默认按 4 �显示。

补�:按 32 �����+1。

最� n=(n-1)&n,�常巧妙了,n-1 的作用是把最�边 1 ��的数字��,�与�算�就�以这个 1 ��的数字�� 0,while 循环�就�以数出有多少个 1 了。