【题目描述】
输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。
【思路】
在python3中,int类型数据的长度可以无限大,是动态长度,只要内存够大。
C++中一般是4Byte,32位。
常规做法,通过移位,flag起始值为1,在一个循环中,将flag不断左移一位,与n作与运算,就相当于逐位检测是否为1了。时间复杂度等于n的长度。
【代码】
c++:
class Solution {
public:
int NumberOf1(int n) {
int flag=1;
int count=0;
while(flag){
if(n & flag){
count++;
}
flag=flag<<1;
}
return count;
}
};
python:
class Solution:
def NumberOf1(self, n):
# write code here
flag=1
count=0
while(flag<2**32):
if(n & flag):
count+=1
flag=flag<<1
return count