剑指offer二进制中1的个数python
题目描述
输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。
思路
一个数-1后和本身异或可以消掉最右边的1
代码
# -*- coding:utf-8 -*- class Solution: def NumberOf1(self, n): # 抹掉最右边的一个1 count = 0 if n < 0: n = n & 0xFFFFFFFF while n: n = (n - 1) & n count += 1 return count