蓝桥杯JAVA B组 2022模拟赛第一题 二进制位数

一.题目描述

十进制整数 2 在十进制中是 1 位数,在二进制中对应 10 ,是 2 位数。
十进制整数 22 在十进制中是 2 位数,在二进制中对应 10110 ,是 5 位数。
请问十进制整数 2022 在二进制中是几位数?

二.代码

import java.math.BigInteger;
public class test1{
    public static void main(String[] args) {
       System.out.println(new BigInteger("2022",10).toString(2).length());
       //将2022从10进制转为2进制
    }
}

三.知识点

java中任意进制的转换方法

方法一:利用 Integer 实现进制转换

1、十进制转其他进制

Integer类的方法

Integer.toBinaryString(),十进制转换成二进制

Integer.toOctalString(),  十进制转换成八进制

Integer.toHexString()   十进制转换成十六进制

public class test1{
   public static void main(String[] args){
       int ten = 9843;
       //十进制--->二进制
       String two = Integer.toBinaryString(ten);//输出:10011001110011
       //十进制--->八进制
       String eight = Integer.toOctalString(ten);//输出:23163
       //十进制--->十六进制
       String sixteen = Integer.toHexString(ten);//输出:2673
       System.out.println(two);
       System.out.println(eight);
       System.out.println(sixteen);
    }
}

2、其他进制转十进制

Integer.valueOf(s, radix) 将 s 以 radix 进制的形式转换为十进制。

public class test1{
   public static void main(String[] args){
       //八进制--->十进制
       String  eight = "23163";
       int ten1 = Integer.valueOf(eight,8);//输出:9843
       //二进制--->十进制
       String two = "10011001110011";
       int ten2 = Integer.valueOf(two,2);//输出:9843
       //十六进制--->十进制
       String sixteen = "2673";
       int ten3 = Integer.valueOf(sixteen,16);//输出:9843
       System.out.println(ten1);
       System.out.println(ten2);
       System.out.println(ten3);
    }
}

3.混合使用

eg:八进制转二进制

八进制---->十进制----->二进制

public class test1{
   public static void main(String[] args){
       String eight = "1410";
       String two = Integer.toBinaryString(Integer.valueOf(eight,8));//八进制转十进制,十进制转二进制
       System.out.println(two);//输出:1100001000
    }
}

方法二:利用 BigInteger 实现进制转换。

注意:1.结果用String存,是一个字符串
     2.new BigInteger(x, a).toString(b)
         x:想要转换的数字(字符串类型,记得加上双引号)
         a:原先的进制
         b:想要转换的进制
import java.math.BigInteger;
public class test1{
   public static void main(String[] args){
       String a = new BigInteger("987", 10).toString(2);
       /*注意:1.结果用String存,是一个字符串
             2.new BigInteger(x, a).toString(b)
                x:想要转换的数字(字符串类型,记得加上双引号)
                a:原先的进制
                b:想要转换的进制*/
       System.out.println(a);//输出:1111011011
    }
}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值