# -*- 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 了。