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

题目描述

输入一个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;
}
 
原文地址:https://www.cnblogs.com/JaminLin/p/9546181.html