剑指offer 10 二进制中1的个数

来源:互联网 发布:淘宝上的红酒是真的吗 编辑:程序博客网 时间:2024/06/08 10:32

题目描述

输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。

思路:

flag初始化为1,和n做与运算,然后把flag向左移动一位,重复。

class Solution:    def NumberOf1(self, n):        # write code here        flag = 1        count = 0        step = 0        while step < 32:            if n & flag:                count += 1            step += 1            flag <<= 1        return count