当前位置: 移动技术网 > IT编程>开发语言>C/C++ > 华为机试 求int型数据在内存中存储时1的个数

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

2018年08月28日  | 移动技术网IT编程  | 我要评论

题目描述

输入一个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;
}

 

 

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网