算法训练 6-2递归求二进制表示位数
时间限制:10.0s 内存限制:256.0MB
问题描述
给定一个十进制整数,返回其对应的二进制数的位数。例如,输入十进制数9,其对应的二进制数是1001,因此位数是4。
样例输入
一个满足题目要求的输入范例。
9
9
样例输出
与上面的样例输入对应的输出。
数据规模和约定
输入数据中每一个数的范围。
例:输入在int表示范围内。
例:输入在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 import java.util.Scanner; 2 3 public class Main { 4 public static void main(String[] args) { 5 Scanner sc = new Scanner(System.in); 6 int n = sc.nextInt(); 7 8 //因为返回的是一个整数参数的字符串表示形式,所以利用length()方法求得字符串长度 9 int len = Integer.toBinaryString(n).length(); 10 11 System.out.println(len); 12 } 13 }