对应二进制数中1的个数-Java基础

 题目描述:输入一个整数,输出该数二进制表示中 1 的个数。

正数的补码还是原码,负数的补码为原码+1.负数的二进制时候,是补码表示的

解题思路:题目要求是证书,因为题目给出的是int类型,java中的int类型用32位表示,把这个数依次无符号右移(考虑到负数所以选择无符号右移)然后与1作与运算。如果结果为1则count自增。

  1. public class Solution{
  2. public int NumberOf1(int n){
  3. int sum = 0;
  4. for(int i=0;i<32;i++){
  5.    if((n>>i&1)==1)
  6.       sum++;
  7.     }
  8.   return sum;
  9.    }
  10. }

下面代码是只考虑正数,但是当为负数的时候,是补码表示的:

public class BinaryOne15_78 {
    /**
     *  ycy
     *  题目描述:
     *    输入一个整数,输出该数二进制表示中 1 的个数。
     */

  1.     public static int numOne(int n){
  2.         int count = 0, temp = 0;
  3.         int array[] = new int[20];
  4.         int size = 0;
  5.         if(n==0) return 0;
  6.         while(n>=1){
  7.             temp = n%2;
  8.             n = n/2;
  9.             array[size++] = temp;
  10.             if(temp == 1){
  11.                 count++;
  12.             }
  13.         }
  14.         System.out.println("二进制: ");
  15.         for(int i=size-1;i>=0;i--){
  16.             System.out.print(" "+array[i]);
  17.         }
  18.         return count;
  19.     }
  20.     public static int numOneInt(int n){
  21.         return Integer.bitCount(n);
  22.     }
  23.     public static void main(String[] args) {
  24.         // TODO Auto-generated method stub
  25.         int n=42;
  26.         int count = numOne(n);
  27.         System.out.println("第一种对应1的个数: "+count);
  28.         int count2 = numOneInt(n);
  29.         System.out.println("第二种对应1的个数: "+count2);
  30.         
  31.     }
  32. }

扫码关注一起随时随地学习!!!就在洋葱攻城狮,更多精彩,等你来!!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

洋葱ycy

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值