/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package d2;
import java.util.*;
/**
*
* @author Gexiuhua And Caixia
*/
class Binery
{
String bi;
Binery()
{
}
public long oRder(int x)//2的x次方求解
{
long sum=1;
for(int i=x-1;i>=0;i--)
{
sum*=2;
}
return sum;
}
public String bToOctal(String x)//二进制转换成八进制
{
for(int i=0;i<x.length();i++)
{
if(x.charAt(i)!='1'&&x.charAt(i)!='0')
System.out.println("The number is not binery.");
}
if(x.length()%3==1)
{
x=(new StringBuffer("00").append(x).toString());
}
else if(x.length()%3==2)
{
x=(new StringBuffer("0").append(x).toString());
}
String []str=new String[x.length()/3];
int j=0;
for(int i=0;i<x.length();i+=3)
{
str[j]=x.substring(i,i+3);
j++;
}
StringBuffer ss=new StringBuffer("");
for(int i=0;i<str.length;i++)
{
ss=(ss.append(bToTen(str[i])));
}
return ss.toString();
}
public String bToHex(String x)//二进制转换成十六进制
{
for(int i=0;i<x.length();i++)
{
if(x.charAt(i)!='1'&&x.charAt(i)!='0')
System.out.println("The number is not binery.");
}
if(x.length()%4==1)
{
x=(new StringBuffer("000").append(x).toString());
}
else if(x.length()%4==2)
{
x=(new StringBuffer("00").append(x).toString());
}
else if(x.length()%4==3)
{
x=(new StringBuffer("0").append(x).toString());
}
String []str=new String[x.length()/4];
int j=0;
for(int i=0;i<x.length();i+=4)
{
str[j]=x.substring(i,i+4);
j++;
}
StringBuffer ss=new StringBuffer("");
for(int i=0;i<str.length;i++)
{
if(bToTen(str[i])==10)
{
str[i]="A";
}
else if(bToTen(str[i])==11)
{
str[i]="B";
}
else if(bToTen(str[i])==12)
{
str[i]="C";
}
else if(bToTen(str[i])==14)
{
str[i]="D";
}
else{str[i]="E";}
ss=(ss.append(str[i]));
}
return ss.toString();
}
public String tenToBinery(long x)//十进制转换成二进制
{
StringBuffer ss=new StringBuffer();
while(x!=0)
{
ss=ss.append(x%2);
x/=2;
}
String b=ss.reverse().toString();
return b;
}
public int bToTen(String x)//二进制转换成十进制
{
int sum=0;
for(int i=0;i<x.length();i++)
{
if(x.charAt(i)!='1'&&x.charAt(i)!='0')
{
System.out.println("The number is not binery.");
break;
}
else{
for(int j=x.length();j>=1;j--)
{
sum +=oRder(j-1)*(int)(((x.charAt(x.length()-j)-'0')));
}
return sum;
}
}
}
}
public class Main {
public static void main(String[] args) {
Binery b=new Binery();
System.out.println("Do you want to know what?\n\n1.二进制转换成八进制:\n\n2.二进制转换成十进制:\n");
System.out.println("3.二进制转换成十六进制\n\n4.十进制转换成二进制:\n");
Scanner sc=new Scanner(System.in);
int s=sc.nextInt();
switch(s)
{
case 1:
System.out.println("please input the binery1 :");
Scanner sc1=new Scanner(System.in);
String s1=sc1.nextLine();
System.out.println( b.bToOctal(s1));
break;
case 2:
System.out.println("please input the binery2 :");
Scanner sc2=new Scanner(System.in);
String s2=sc2.nextLine();
System.out.println(b.bToTen(s2 ));
break;
case 3:
System.out.println("please input the binery3 :");
Scanner sc3=new Scanner(System.in);
String s3=sc3.nextLine();
System.out.println(b.bToHex(s3));
break;
case 4:
System.out.println("please input the ten number: ");
long s4=sc.nextLong();
System.out.println(b.tenToBinery(s4));
break;
default:
System.out.println("Input wrong !");
break;
}
System.out.println("please input the first binery:");
Scanner sc1=new Scanner(System.in);
String s1=sc1.nextLine();
System.out.println("please input the second binery:");
Scanner sc2=new Scanner(System.in);
String s2=sc2.nextLine();
System.out.println("please input the operator(+,-,*)");
System.out.println("1.Plus(+)\n2.Subtraction(-):\n3.Multiplication:(*)");
Scanner sc3=new Scanner(System.in);
int x=sc3.nextInt();
switch(x)
{
case 1:
System.out.println(s1+" + "+s2+" = "+b.tenToBinery((b.bToTen(s1)+b.bToTen(s2))));
break;
case 2:
System.out.println(s1+" - "+s2+" = "+b.tenToBinery((b.bToTen(s1)-b.bToTen(s2))));
break;
case 3:
System.out.println(s1+" * "+s2+" = "+b.tenToBinery((b.bToTen(s1)*b.bToTen(s2))));
break;
default:
System.out.println("Input wrong !");
break;
// Binery bb=new Binery();
// String ss=sc.nextLine();
// System.out.println(bb.bToHex(ss));
}
}
}