闲来无事,写几个题目。仅仅写个人当时第一思路。有错误的地方望指正。
题目:输入一个整数,求该整数的二进制表达中有多少个1。例如输入10,由于其二进制表示为1010,有两个1,因此输出2。
思路:1、首先判断整数是否为0,若为0直接退出;2、再判断整数%2是否为0,若不是0则将SUM(标记整数中1的个数)加1;3、再将整数n/2,或者右移一位(右移的效率比除法的效率高),循环执行步骤2,直到步骤1退出
程序:
import java.util.Scanner;
public class Test
{
public static void main(String args[])
{
Scanner in = new Scanner(System.in);
System.out.print("请输入需要求二进制1个数的整数:");
int N = in.nextInt();
int n = N;
int sum = 0;
while(n != 0)
{
if(n%2 != 0) sum = sum + 1;
n = n>>1;//等价于n = n/2;除法效率比移位运算效率低
}
System.out.println("1的个数为:"+sum);
}
}