计算整数的二进制数中1的个数

请实现一个函数,输入一个整数,输出该数二进制表示中 1 的个数。例如,把 9 表示成二进制是 1001,有 2 位是 1。因此,如果输入 9,则该函数输出 2。
来源:力扣(LeetCode)

打个比方说:
输入 9,9/2=4–1,4/2=2–0,2/2=1—0,1/2=0–1
看吧,结果似乎很明显。将余数按顺序排列:1001;
输入 11, 11/2=5–1, 5/2=2–1, 2/2=1–0, 1/2=0–1
余数顺序排列:1101
神奇吧:)
另一种类似的,因为除以2余数不是0就是1,所以直接加余数也是解。

# -*- coding: utf-8 -*-
#!/usr/bin/env python

"""
Created on Thu Jul 23 15:31:11 2020

@author: MRN_6

@github: https://github.com/WowlNAN

@blog: https://blog.csdn.net/qq_21264377

"""

class Solution:
    def __init__(self):pass
    
    def hammingWeight(self, n: int) -> int:
        '''
        a=0
        b=''
        while n>0:
            if n%2==0:
                b+='0'
            else:
                b+='1'
            n//=2
        print(b)
        return b.count('1')
        '''
        # 优化代码
        a=0
        while n>0:
            if n%2!=0:
                a+=1
            n//=2	#n=int(n/2)
        return a

猜你喜欢

转载自blog.csdn.net/qq_21264377/article/details/107539114
今日推荐