华为-求int型正整数在内存中存储时1的个数

题目链接

https://www.nowcoder.com/practice/440f16e490a0404786865e99c6ad91c9?tpId=37&tqId=21238&tPage=1&rp=&ru=/ta/huawei&qru=/ta/huawei/question-ranking

题目描述

输入一个int型的正整数,计算出该int型数据在内存中存储时1的个数。

输入描述:

 

 输入一个整数(int类型)

输出描述:

 

 这个数转换成2进制后,输出1的个数

示例1

输入

复制

5

输出

复制

2

题解:

#include <iostream>
#include <cmath>
using namespace std;
int main(){
  int n, ans = 0;
  cin >> n;
  long bisize[33];
  for(int i = 0; i < 33; i++){
    bisize[i] = pow(2, i);
  }
  int l = 32;
  while(n > 0){
    if(n >= bisize[l]){
      n -= bisize[l];
      ans++;
    }
    l--;
    if(l < 0){
      break;
    }
  }
  cout << ans << endl;
  return 0;
}

猜你喜欢

转载自blog.csdn.net/reigns_/article/details/81086802