使用JAVA完成十进制到二进制八进制十六进制的转换

/*

十六进制的转换

要求:

1.从键盘输入数据(有输入提示)   

2.用自定义方法

增加:

对输入的数,进行8进制和2进制的转换。

*/


import java.util.Scanner;

public class ArrayTest{

public static void main(String[] args){

System.out.print("请输入要转换为16进制的数字:");

Scanner scan=new Scanner(System.in);

int num = scan.nextInt();

System.out.print("转换后的16进制数为:");

getHex(num);

System.out.println();

System.out.print(" 转换后的2进制数为:");

getBinary(num);

System.out.println();

System.out.print(" 转换后的8进制数为:");

getOctal(num);

}

//getHex方法。  完成16进制的转换功能。

//start getHex;

public static void getHex(int num){

char[] chs={‘0‘,‘1‘,‘2‘,‘3‘,‘4‘,‘5‘,‘6‘,‘7‘,‘8‘,‘9‘,

‘A‘,‘B‘,‘C‘,‘D‘,‘E‘,‘F‘};

char[] arr = new char[8];

int p = arr.length; //int类型在内存中是4字节,32个2进制位,对应的十六进制位是8. 每4位对应一位16进制数。

if(num == 0 ){

System.out.print("0");

return ; //此处的return ;当接收的数据为0的时候,结束此方法。

}

while(num != 0 ){

int x = num & 15;

arr[--p] = chs[x]; //在存数的过程中,从最高位开始存。 也就是最先运算出来的数字,存到数组的最后一位。

num = num >>> 4; //将num向右移4个2进制位。  >>>代码无符号右移。>>代表有符号有移。

}

for(int i=p;i<arr.length;i++){   //输出过程是从有效位开始输出。带有0不输出

System.out.print(arr[i]);

}

}

//end getHex

//start getOctal

public static void getOctal(int num){

char[] chs={‘0‘,‘1‘,‘2‘,‘3‘,‘4‘,‘5‘,‘6‘,‘7‘};

char[] arr=new char[11];

int p=arr.length;

if(num == 0){

System.out.print("0");

return ;

}

while(num != 0){

int n=num & 7;

arr[--p] = chs[n];

num = num >>> 3;

}

for(int i=p;i<arr.length;i++){

System.out.print(arr[i]);

}

}

//end getOctal

//start getBinary

public static void getBinary(int num){

char[] chs={‘0‘,‘1‘};

char[] arr=new char[32];

int p=arr.length;

if(num == 0){

System.out.print("0");

return ;

}

while(num !=0){

int n=num & 1;

arr[--p]=chs[n];

num = num >>>1;

}

for(int i=p;i<arr.length;i++){

System.out.print(arr[i]);

}

}

//end getBinary

}


郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。