標籤:進位轉換
/*
十六進位的轉換
要求:
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
}
使用JAVA完成十進位到二進位八進位十六進位的轉換