Python练习:输入一个整数,输出该数二进制表示中1的个数。

发布时间 2023-08-19 16:44:53作者: limalove

 

 

Python3 整数对象存储为无符号数加上符号位标志,所以不存在“负数”补码形式,因此,计算 “1” 的数量需要按去符号后的无符号数:

cnt=bin(n).count('1')

另外,Python3 无长整,整数长度原则上不限,所以不能以假定的 32 位处理。

 

 

 

 

补码+原码=2**32
 1 # -*- coding:utf-8 -*-
 2 class Solution:
 3     # bin函数: bin返回一个整数的二进制字符串,以0b开头,
 4     # bin(10) '0b1010'  bin(-10)  '-0b1010'
 5     #
 6     # count函数 返回字符串当中非重叠的字符串的个数,可以传入start,end来表示对字符串切片的结果
 7     #
 8     #如果一个数为负数,那么2**32 + n 然后再用bin返回的就是它的补码形式。 补码+原码=2**32
 9     def NumberOf1(self, n):
10         if n >= 0:
11             return bin(n).count('1')
12         else:
13             return bin(2**32 + n).count('1')
14  
15 if __name__ == '__main__':
16     solution = Solution()
17     print(solution.NumberOf1(10))
18     print(solution.NumberOf1(-10))