【华为OJ】查找输入整数二进制中1的个数

请实现如下接口 

   public static int findNumberOf1(intnum)

    { 

       /* 请实现 */ 

       return 0; 

    }

譬如:输入5 ,5的二进制为101,输出2 

涉及知识点:位运算

知识点:  位运算 

题目来源:  内部整理 

练习阶段:  初级 

运行时间限制: 10Sec

内存限制: 128MByte

输入: 输入一个整数

输出: 计算整数二进制中1的个数

 样例输入: 5

 样例输出: 2

我的代码:

#include <iostream>
using namespace std;
int main()
{
	int GetCount(unsigned int num);
	unsigned int a;
	cin>>a;
    cout<<GetCount(a)<<endl;
	return 0;
}
int GetCount(unsigned int num)
{
	//在这里实现功能
    int m=0;
    while(num)
	{
		num &=(num-1);
		m++;
	}
	return m;
}

代码评价:

    之前,把main函数中的num 声明为int型时,在vs2008上运行正确,在oj平台上总是运行错误。

    后来看了大家的评论,提示把num声明为 unsigned int 计算结果正确。

阅读更多
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/haoxiaodao/article/details/45060313
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭
关闭