求一个整数的二进制中1的个数

闲来无事,写几个题目。仅仅写个人当时第一思路。有错误的地方望指正。

题目:输入一个整数,求该整数的二进制表达中有多少个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);
     }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值