使用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
}


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章