蓝桥杯 算法训练 ALGO-151 6-2递归求二进制表示位数

怼烎@ 2023-10-06 09:40 104阅读 0赞

算法训练 6-2递归求二进制表示位数

时间限制:10.0s 内存限制:256.0MB

问题描述

  给定一个十进制整数,返回其对应的二进制数的位数。例如,输入十进制数9,其对应的二进制数是1001,因此位数是4。

样例输入

一个满足题目要求的输入范例。
9

样例输出

与上面的样例输入对应的输出。
format_png

数据规模和约定

  输入数据中每一个数的范围。
  例:输入在int表示范围内。

题目解析:

  在 Java 的 Integer 类的方法中,有将十进制数转换为二进制、八进制和十六进制的三个方法。若参数为正整数,则将以 X 进制无符号整数形式返回一个整数参数的字符串表示形式,否则,无符号整数值为参数加上 2^32 。

  本题中直接调用 Integer 类的 toBinaryString() 方法,返回字符串后再调用 length() 方法,求得二进制表示位数。

补充:  十进制转十六进制:   Integer.toHexString(int i)

     十进制转八进制:    Integer.toOctalString(int i)

     十进制转二进制:    Integer.toBinaryString(int i)

     十六进制转十进制:   Integer.valueOf(“FFFF”,16).toString()
     八进制转十进制:    Integer.valueOf(“123”,8).toString()
     二进制转十进制:    Integer.valueOf(“1001”,2).toString()

示例代码:

  1. 1 import java.util.Scanner;
  2. 2
  3. 3 public class Main {
  4. 4 public static void main(String[] args) {
  5. 5 Scanner sc = new Scanner(System.in);
  6. 6 int n = sc.nextInt();
  7. 7
  8. 8 //因为返回的是一个整数参数的字符串表示形式,所以利用length()方法求得字符串长度
  9. 9 int len = Integer.toBinaryString(n).length();
  10. 10
  11. 11 System.out.println(len);
  12. 12 }
  13. 13 }

发表评论

表情:
评论列表 (有 0 条评论,104人围观)

还没有评论,来说两句吧...

相关阅读