Java implements large number binary conversion

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]);
        }

    }
}

Guess you like

Origin blog.csdn.net/Youcan39tl/article/details/86672535