您的位置:首页 > 编程语言 > Java开发

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

2015-03-28 22:11 369 查看
/*
十六进制的转换
要求:
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
;
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
;
num = num >>>1;
}
for(int i=p;i<arr.length;i++){
System.out.print(arr[i]);
}
}
//end getBinary
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: