您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 信息化管理 > java-十进制与二进制的转换方法
//十进制转二进制importjava.*;importjava.util.ArrayList;importjava.util.Scanner;publicclassT_to_B{staticStringTtoB_fun(Stringstr){Strings=;booleanflg=str.contains(.);//判断是否有小数点ArrayListlist=newArrayList();if(flg==false){intn=Integer.valueOf(str).intValue();while(n!=0){list.add(n%2);n=n/2;}for(inti=list.size()-1;i=0;i--){s+=list.get(i)+;}}else{str=str.replace(.,-);String[]st=str.split(-);inta1=Integer.valueOf(st[0]).intValue();Stringss=0.+st[1];doublea2=Double.parseDouble(ss);while(a1!=0){list.add(a1%2);a1=a1/2;}for(inti=list.size()-1;i=0;i--){s+=list.get(i)+;}s+=.;while(a2!=0.0){a2=a2*2;doubled1=a2;intd2=(int)d1;doubled3=(double)d2;doubled4=d1;a2=d1-d3;switch(d2){case0:s+=0;break;case1:s+=1;break;}}}returns;}publicstaticvoidmain(String[]args){Scannersc=newScanner(System.in);longstartTime=System.currentTimeMillis();System.out.println(请输入10进制数:);Stringstr=sc.nextLine();System.out.println(结果为二进制数:\n+TtoB_fun(str));longendTime=System.currentTimeMillis();longusedTime=endTime-startTime;System.out.println(所用时间:+usedTime);}}//二进制转十进制importjava.util.ArrayList;importjava.util.Scanner;publicclassB_to_T{staticintTow_n(intn){//2的正N次方inta=1;for(inti=1;i=n;i++){a*=2;}returna;}staticdoubleTow_N(intn){//2的负N次方doublea=1.0;doubleb=1.0;for(inti=1;i=n;i++){b*=2;a=1.0/b;}returna;}staticStringBtoT_fun(Stringstr){Strings=;//放得到的数的结果booleanflg=str.contains(.);//判断是否有小数点if(flg==false){intb=0;intj=str.length()-1;//j为相应的2的次方int[]arr=newint[str.length()];for(inti=0;istr.length();i++){char[]ch=str.toCharArray();//把字符串转为字符数组,获取每一位数字Stringst=Character.toString(ch[i]);//把字符转为字符串arr[i]=Integer.valueOf(st).intValue();//再把字符串转为整型依次放入整型数组b+=arr[i]*Tow_n(j);j--;}s+=b+;}else{intd=0;doublec=0;doubleb=0;Stringsss=;//用来去点小数的“0.”,方便和前面的连接起来str=str.replace(.,-);String[]st=str.split(-);//将整数和小数分开int[]arr=newint[st[0].length()];//放整数位的double[]drr=newdouble[st[1].length()];//放小数位的char[]ch1=st[0].toCharArray();//把字符串转为字符数组,获取每一位数字char[]ch2=st[1].toCharArray();//把字符串转为字符数组,获取每一位数字intj=st[0].length()-1;for(inti=0;ist[0].length();i++){Stringss=Character.toString(ch1[i]);//把字符转为字符串arr[i]=Integer.valueOf(ss).intValue();//再把字符串转为整型依次放入整型数组d+=arr[i]*Tow_n(j);j--;}for(inti=0;ist[1].length();i++){Stringss=Character.toString(ch2[i]);//把字符转为字符串drr[i]=Double.parseDouble(ss);//再把字符串转为double型依次放入数组b+=drr[i]*Tow_N(i+1);}c=(double)d+b;s+=c+;}returns;}publicstaticvoidmain(String[]args){Scannersc=newScanner(System.in);longstartTime=System.currentTimeMillis();System.out.println(请输入2进制数:);Stringstr=sc.nextLine();System.out.println(结果为十进制数:+BtoT_fun(str));longendTime=System.currentTimeMillis();longusedTime=endTime-startTime;System.out.println(所用时间:+usedTime);}}
本文标题:java-十进制与二进制的转换方法
链接地址:https://www.777doc.com/doc-5275488 .html