首页 > 试题广场 >

二进制中有多少个1

[编程题]二进制中有多少个1
  • 热度指数:6864 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32M,其他语言64M
  • 算法知识视频讲解
把一个 32-bit 整型转成二进制,其中包含多少个 1 ,比如 5 的二进制表达是 101 ,其中包含 2 个 1
 
数据范围:输入的数字满足

输入描述:
输入为整型(十进制),只需兼容32-bit即可,如5、32


输出描述:
输出为字符串,如“2”、“1”
示例1

输入

5

输出

2

说明

5的二进制是101,其中包含2个1 
示例2

输入

0

输出

0
#include <stdio.h>
#include <stdlib.h>

int bit_count(int x) {
  int n = 0;
  while (x) {
    x &= x - 1;
    ++n;
  }
  return n;
}

int main(const int argc, const char* const argv[]) {
  int x;
  fscanf(stdin, "%d", &x);
  fprintf(stdout, "%d\n", bit_count(x));
  return 0;

发表于 2021-08-05 18:54:10 回复(0)