十进制转二进制
这种经典的题目怎么不去写一写呢?
拿到这道题的思路如下:
因为二进制的特殊性,不是0就是1,所以一个if判断就可以了,其他的问题都是细节补充了(其实都是我想简单了)。
题析
(1)需要一个数组来接收值并打印出来。
(2)为了节约空间,还有在数组逆输出的时候,那些置0的就很容易引起困扰,所以要在使用数组之前,需要确定大小的。
(3)其余为细节问题。
代码
package Day2;
import java.util.Scanner;
public class twoHuanSuan {
public static void main(String[] args) {
System.out.println("===============");
Scanner sc = new Scanner(System.in);
int num = sc.nextInt();
int b = 0;
int s = num;
// 判断该十进制的数字转二进制的长度
while (s > 0) {
b++;
s = s / 2;
}
// 可以确定数组长度了
int[] aa = new int[b];
for (int i = 0; i < b; i++) {
// 不能被2除尽的肯定是1了,数组aa自动写入1,剩下就是除的尽了,数组自动写入0
if (num % 2 != 0) {
num = num / 2;
aa[i] = 1;
} else {
num = num / 2;
aa[i] = 0;
}
}
// 循环逆顺序打印出数组aa
for (int i = 0; i < aa.length; i++) {
System.out.print(aa[aa.length - i - 1]);
}
}
}
就这样了。