Java implements large number binary conversion
import java.util.Scanner;
//通过数组存储数据,将对数据与2求余转换为对数组最后一项与2求余
public class First {
//zero函数:判断数据是否已经为0
public static boolean zero(int num[]){
for (int i = 0; i < num.length; i++) {
if(num[i]!=0){
return false;//如果数据还不为0,返回false
}
}
return true;//如果数据已经为0,返回true
}
//deal函数:实现大数的除法,从高位开始将以数组形式储存的大数除以2
public static int[] deal(int a[]){
int flag = 0;//是否有余数的标志
int len = a.length;//len储存数据的长度
for (int k = 0; k < len; k++) {
if(a[k]%2==0){
a[k]/=2;
if(flag==1){
//标志为1表示上一位有余数,当前位+5
a[k]+=5;
flag = 0;
}
}
else{
//当前为有余数
a[k]/=2;
if(flag==1){
a[k]+=5;
}
flag = 1;//标志为1,下一位即+5
}
}
return a;//返回进行除法后的数组
}
public static void main(String[] args) {
int i;
int j;
int t;
int len;
int result[] = new int [1000];
String str;
Scanner in = new Scanner(System.in);
str = in.next();//以字符串形式输入数据
int num[] = new int [str.length()];
char a [] = str.toCharArray();//将字符串转换为字符数组
for (i = 0; i < a.length; i++) {
num[i] = a[i] - 48;//将字符数组转转换为整型数组储存在num中
}
i = 0;
while (!zero(num)){
//调用zero函数判断数据是否已经为0
result[i] = num[num.length - 1] % 2;
num = deal(num);//调用deal函数对数据除以2
i++;
}
len = i;//此时i为二进制数的长度
j = i - 1 ;
for (i = 0; i < j;i ++,j --) {
//将得到的二进制数组进行逆序
t = result[i];
result[i] = result[j];
result[j] = t;
}
for (i = 0;i < len;i++){
System.out.print(result[i]);
}
}
}