扩展知识:

该题重点考察的是如何将一个十进制整数转化为它的二进制数形式。有以下三种方法:

  • 方法一(除基倒取余法):

类似于数学求二进制的过程,将原数n 不断除以2求出余数然后把商作为下一次的待除数,直到商为0

1
2
3
4
5
6
7
8
public void binaryToDecimal(int n){
String str = "";
while(n!=0){
str = n%2+str;
n = n/2;
}
System.out.println(str);
}
  • 方法二(移位操作):

可以利用移位操作对一个十进制数进行移位。将最高位的数移动至最低为(移31位),然后将最低位的其余位置都清零,使用 & 操作,可以使用和 1 相与来获得该位置对应的二进制位数值;再次移动高位,做出相同的操作,直到最后一位。

1
2
3
4
public void binaryToDecimal2(int n){
for(int i = 31;i >= 0; i--)
System.out.print(n >>> i & 1);
}
  • 方法三(调用API函数):

使用包装类Integer 的 toBinaryString() 方法将一个int型整数转化为 二进制字符串。

1
2
3
4
5
6
public void function1(int n){
String result = Integer.toBinaryString(n);
//int r = Integer.parseInt(result);
//System.out.println(r);
System.out.println(result);
}

之后该题都很简单了