剑指offer11-二进制中1的个数

题目描述

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

示例

输入     10

返回值  2

知识点回顾

与操作:给定一个数n,每进行一次n&(n-1)计算,其结果中都会少了一位1,而且是最后一位

代码

# -*- coding:utf-8 -*-
class Solution:
    def NumberOf1(self, n):
        # write code here
        count=0
        m=n&0xffffffff     
        while m!=0:
            m=m&(m-1)
            count+=1
        return count
#为什么少写  m=n&0xffffffff 这一句会报错运行超时??
# -*- coding:utf-8 -*-
class Solution:
    def NumberOf1(self, n):
        # write code here
        count=0
        while n!=0:
            n=n&(n-1)
            count+=1
        return count

 

原文地址:https://www.cnblogs.com/foolangirl/p/13996173.html