题目
==============================================================
请实现如下接口
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);
}
}