题目
描述
输入一个整数 n ,输出该数32位二进制表示中1的个数。其中负数用补码表示。
数据范围:
−2147483648<=n<=2147483647
思路
求余数,如果是正数,余数为1就加一,负数要按位取反,遇见0了用32-1。
代码
python版本:
#
# 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
#
#
# @param n int整型
# @return int整型
#
class Solution:
def NumberOf1(self , n: int) -> int:
# write code here
if n==0:
return 0
res = 0 if n > 0 else 32
while(n!=0):
if n >0:
if n % 2 == 1:
res += 1
else:
if n % 2 == 0:
res -= 1
n = int(n/2)
return res
c++版本:
无