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

2018-09-01 05:37:57来源:博客园 阅读 ()

新老客户大回馈,云服务器低至5折

题目描述

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

 

 

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:STL之deque用法

下一篇:Too Rich HDU - 5527 (贪心+dfs)