剑指offer 15 - 二进制中1的个数 - python

94 阅读1分钟

题目描述

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


法1:使用Python内置的函数bin()将给定的整数转换为二进制形式,对应的二进制数为0b开头的形式,所以还需要将其替换为空字符串。然后,将二进制字符串转换为list,判断list中字符为'1'的个数即可。

class Solution:
    def hammingWeight(self, n: int) -> int:
        num = list(bin(n).replace('0b', ''))
        print(num)

        count = 0
        for i in num:
            if i == '1':
                count +=1 

        return count

在这里插入图片描述

法2:使用于操作,如果二进制的某一位和1相与结果为1,说明该位为1,否则为0。同时使用左移操作不断的去掉已经比较过的位置,移位后高位补0。

class Solution:
    def hammingWeight(self, n: int) -> int:

        count = 0
        for i in range(32):
            if n & 1 == 1:
                count += 1
            n = n >> 1 

        return count  

在这里插入图片描述