您的位置:首页 > 编程语言 > Java开发

华为OJ训练之0009-161231-统计二进制数字中1的个数(求int型数据在内存中存储时1的个数)

2017-03-19 16:55 232 查看

题目

==============================================================

请实现如下接口

public static int findNumberOf1(intnum)

{

/* 请实现 */

return 0;

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

涉及知识点:

位运算

知识点 位运算

运行时间限制 10M

内存限制 128

输入

输入一个整数

输出

计算整数二进制中1的个数

样例输入 5

样例输出 2

===============================================================

一次通过 得分100

考察位运算

也可使用 num=num&(num-1)

需要考虑负数的问题 以及数据位数的问题

此题同样用于(求int型数据在内存中存储时1的个数)

这道题

一次通过100分

==============================================================

import java.util.Scanner;

//请实现如下接口
//    public static int findNumberOf1(intnum)
//    {
//        /* 请实现 */
//        return 0;
//    }譬如:输入5 ,5的二进制为101,输出2
//
//涉及知识点:
//
//位运算

public class oj009 {

public int findNumberOf1(int num)
{
int count=0;
int a=1;
while(a!=0)
{
if((num&a)!=0) {count++;} //判断a中1所在的位置对应的num中的数字是否为1 是则计数
a=a<<1;                   //a右移一位
}

return count;

}

public static void main(String[] args) {

Scanner scanner=new Scanner(System.in);
int a=scanner.nextInt();

int n=new oj009().findNumberOf1(a);
System.out.println(n);
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  位运算 华为oj java
相关文章推荐