JAvaは任意の進数間の変換を簡単に実現する
26989 ワード
異なる進数のデータ表現形式:1.バイナリ:0,1からなる;0 bで始まるか、Bで終わる.2.8進法:0、1、2、3、4、5、6、7からなり、0で始まる.3.10進数:0、1、2、3、4、5、6、7、8、9からなり、デフォルトは10進数データです.
4.16進数:0,1,2,3,4,5,6,7,8,9,a,b,c,d,e,f(アルファベットの大文字と小文字どちらでもよい)から0 xで始まる
JAvaコード
4.16進数:0,1,2,3,4,5,6,7,8,9,a,b,c,d,e,f(アルファベットの大文字と小文字どちらでもよい)から0 xで始まる
JAvaコード
import java.util.Scanner;
public class E201_01_08 {
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
boolean b = true;
boolean b1 = false;
do{
System.out.println("*---------------- -----------------*");
System.out.print("*A: => \t\t");
System.out.println("B: => *");
System.out.print("*C: => \t\t");
System.out.println("D: => *");
System.out.print("*E: => \t");
System.out.println("F: => *");
System.out.print("*G: => \t\t");
System.out.println("H: => *");
System.out.print("*I: => \t");
System.out.println("J: => *");
System.out.println("*K: ");
System.out.print(" (A-K):");
char c = sc.next().charAt(0);
int num;
String sum= "";
switch (c){
case 'A':
System.out.print(" :");
num = sc.nextInt();
for(int i = tenToTwo(num).length()-1;i>=0;i--){
sum+=tenToTwo(num).substring(i,i+1);
}
System.out.println(num+"(10)→"+sum+"(2)");
break;
case 'B':
System.out.print(" :");
String twoten = sc.next();
System.out.println(twoten+"(2)→"+twoToTen(twoten)+"(10)");
break;
case 'C':
System.out.print(" :");
int teneight = sc.nextInt();
for(int i = tenEight(teneight).length()-1;i>=0;i--){
sum+=tenEight(teneight).substring(i,i+1);
}
System.out.println(teneight+"(10)→"+sum+"(8)");
break;
case 'D':
System.out.print(" :");
String eightten = sc.next();
System.out.println(eightten+"(8)→"+eightTen(eightten)+"(10)");
break;
case 'E':
System.out.print(" :");
int ten = sc.nextInt();
for(int i = Ten(ten).length()-1;i>=0;i--){
sum+=Ten(ten).substring(i,i+1);
}
System.out.println(ten+"(10)→"+sum+"(16)");
break;
case 'F':
System.out.print(" :");
String sixteen = sc.next();
System.out.println(sixteen+"(16)→"+sixTeen(sixteen)+"(10)");
break;
case 'G':
System.out.print(" :");
String two1 = sc.next();
int num1 =twoToTen(two1);//
for(int i = tenEight(num1).length()-1;i>=0;i--){
sum+=tenEight(num1).substring(i,i+1);
}
System.out.println(two1+"(2)→"+sum+"(8)");
break;
case 'H':
System.out.print(" :");
String eight = sc.next();
int eight1 =eightTen(eight);
for(int i = tenToTwo(eight1).length()-1;i>=0;i--){
sum+=tenToTwo(eight1).substring(i,i+1);
}
System.out.println(eight+"(8)→"+sum+"(2)");
break;
case 'I':
System.out.print(" :");
String two = sc.next();
int two2 =twoToTen(two);
for(int i = Ten(two2).length()-1;i>=0;i--){
sum+=Ten(two2).substring(i,i+1);
}
System.out.println(two+"(2)→"+sum+"(16)");
break;
case 'J':
System.out.print(" :");
String sixtwo = sc.next();
int tensix = sixTeen(sixtwo);
for(int i = tenToTwo(tensix).length()-1;i>=0;i--){
sum+=tenToTwo(tensix).substring(i,i+1);
}
System.out.println(sixtwo+"(16)→"+sum+"(2)");
break;
case 'K':
do {
System.out.print(" (Y/N):");
char out = sc.next().charAt(0);
switch (out) {
case 'Y':
b = false;
b1=false;
break;
case 'N':
b1=false;
break;
default:
b1=true;
System.out.println("********** ! *************");
}
}while(b1);
break;
default:
System.out.println("************ ! *************");
}
}while(b);
}
//A. >
private static String tenToTwo(int num){
String s = "";
while(num>=2) {
if (num % 2 == 0){
s=s+"0";
}else{
s=s+"1";
}
num=num/2;
if(num<2){
s+="1";
}
}
return s;
}
//B. >
private static int twoToTen(String num){
int sum = 0;
for(int i = 0;iint )Integer.parseInt(num.substring(i,i+1))*Math.pow(2,num.length()-1-i);
}
return sum;
}
//C.
private static String tenEight(int teneight){
String s = "";
while(teneight>=8) {
for(int i =0;i<8;i++){
if(teneight%8==i){
s+=Integer.toString(i);
break;
}
}
teneight=teneight/8;
if(teneight<8){
s+=Integer.toString(teneight);
}
}
return s;
}
//D.
private static int eightTen(String num){
int sum = 0;
for(int i = 0;iint)Integer.parseInt(num.substring(i,i+1))*Math.pow(8,num.length()-1-i);
}
return sum;
}
//E.
private static String Ten(int num){
String s = "";
String arr[] = {"0","1","2","3","4","5","6","7","8","9","a","b","c","d","e","f"};
if(num<16){
s=arr[num%16];
}
while(num>=16) {
for(int i =0;i<16;i++){
if(num%16==i){
s+=arr[i];
break;
}
}
num=num/16;
if(num<16){
s+=arr[num%16];
}
}
return s;
}
//F
private static int sixTeen(String num){
int sum = 0;
for(int i = 0;i1);
if(ch.equals("a")){
ch="10";
}else if(ch.equals("b")){
ch="11";
}else if(ch.equals("c")){
ch="12";
}else if(ch.equals("d")){
ch="13";
}else if(ch.equals("e")){
ch="14";
}else if(ch.equals("f")){
ch="15";
}
sum+=(int)Integer.parseInt(ch)*Math.pow(16,num.length()-1-i);
}
return sum;
}
}