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

华为机试 求int型数据在内存中存储时1的个数

程序员文章站 2024-01-16 12:11:16
题目描述 输入一个int型的正整数,计算出该int型数据在内存中存储时1的个数。 输入描述: 输入一个整数(int类型) 输出描述: 这个数转换成2进制后,输出1的个数 输入 5 输出 2 普通运算方法 #include using namespace std; int main ......

题目描述

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

输入描述:

 输入一个整数(int类型)

输出描述:

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


输入

5

输出

2


普通运算方法

#include<iostream>

using namespace std;

int main(){
    int num,count=0;
    cin>>num;
    while(num){
        if(num%2==0)
            num/=2;
        else{
            count++;
            num/=2;
        }            
    }
    cout<<count;
    return 0;
}

 

运用右移运算符

  

11111111 11111111 11111111 11111111
00000000 00000000 00000000 00000001

//执行value>>=1后结果为
11111111 11111111 11111111 11111111
0000000 00000000 00000000 00000000(1)

//运用value&1==1
//最低位为1时,value&1=1;
//最低位为0时,value&1=0

 

#include<iostream>

using namespace std;

int main()
{
    int value,count=0;
    cin>>value;
    while(value)
    {
        if(value&1)
            count++;
        value>>=1;
    }
    cout<<count;
    return 0;
}