二进制中1的个数
- 参与人数:7653时间限制:1秒空间限制:32768K
- 算法知识视频讲解
题目描述
输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。
class Solution {
public:
int NumberOf1(int n) {
if(n==-2147483648)
return 1;
if(n==-1)
return 32;
int result=0;
while(n){
if(n%2==1)
result++;
n/=2;
}
return result;
}
};
方法二:
一位一位的去判断,与 8,4,2,1 这样的数去按位与
class Solution {
public:
int NumberOf1(int n) {
int a[32];
a[0]=1;
for(int i=1;i<32;i++)
a[i] = a[i-1]*2;
int result=0;
for(int i=0;i<32;i++)
if(n&a[i])
<span style="white-space:pre"> </span>result++;
return result;
}
};