欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

求int型正整数在内存中存储时1的个数(二进制中1的个数)

程序员文章站 2022-03-06 23:00:03
...

求int型正整数在内存中存储时1的个数(二进制中1的个数)

题目描述

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

输入描述:
输入一个整数(int类型)

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

示例1
输入
5
输出
2

C++

  • 一个数n,与n-1相与,会使得n的二进制表示中最后一个1变为0
  • 只要计算n&(n-1)的次数,就是其二进制表示中1的个数
#include<cstdio>
int main(){
    int n,cnt;
    scanf("%d",&n);
    while(n!=0){
        n=n&(n-1);
        cnt++;
    }
    printf("%d\n",cnt);
    return 0;
}
相关标签: 华为