十进制转二进制、八进制、十六进制代码
1 package com.scwyqin.Transition; 2 3 /* 4 * @author:scwyqin 5 * @date: 2020-3-2 19:21 6 */ 7 8 import java.util.Scanner; 9 10 public class Transition { 11 public static void main(String[] args) { 12 //从键盘得到需要转换的值 13 System.out.print("请输入需要转换的值n:"); //提醒输入 14 Scanner sc=new Scanner(System.in); //new一个系统输入扫描仪 15 int n=sc.nextInt(); //得到键盘输入的值 16 sc.close(); //关闭扫描仪 17 //转换为二进制 18 TenToTwo(n); 19 //转换为八进制 20 TenToEight(n); 21 //转换为十六进制 22 TenToSixteen(n); 23 24 } 25 26 27 //用余数法将十进制转换为二进制 28 public static void TenToTwo(int n){ 29 //声明一个数组用来存放二进制的每一位的值 30 int[] a=new int[50]; 31 int i=0; //记录数组角标 32 //取余存入数组中,知道被除数为0 33 if (n>1){ //判断n是否需要进位 34 do { 35 a[i] = n % 2; //取余存入数组 36 n = n / 2; 37 i++; //数组角标 38 }while (n>0); 39 } 40 else{ 41 a[i]=n; 42 } 43 System.out.print("二进制为:0b"); 44 //遍历输出数组 45 for (i=i-1;i>=0;i--){ 46 System.out.print(a[i]); 47 } 48 System.out.println(); //换行 49 50 } 51 52 53 //十进制转为八进制 54 public static void TenToEight(int n){ 55 //声明一个数组用来存储八进制数字 56 int[] a=new int[50]; 57 int i=0; //数组角标 58 //同二进制,取余存入数组 59 if(n>=8){ //判断n是否需要进位 60 do { 61 a[i]=n % 8; 62 n=n/8; 63 i++; 64 }while (n>0); 65 }else { 66 a[i]=n; 67 } 68 System.out.print("八进制为:O"); 69 //遍历输出数组 70 for (i=i-1;i>=0;i--){ 71 System.out.print(a[i]); 72 } 73 74 System.out.println(); //换行 75 } 76 77 78 //十进制转为十六进制 79 //方法同二进制和八进制,但是难点是怎么表示那几个字母 80 public static void TenToSixteen(int n){ 81 //声明一个数组用来存储十六进制数字 82 int[] a=new int[10]; 83 int i=0; //数组角标 84 //同二进制,取余存入数组 85 if(n>=16){ //判断n是否需要进位 86 do { 87 a[i]=n % 16; 88 n=n/16; 89 i++; 90 }while (n>0); 91 }else { 92 a[i]=n; 93 } 94 System.out.print("十六进制为:0x"); 95 //遍历输出数组 96 for (i=i-1;i>=0;i--) { 97 //加一个条件判定语句,如果小于10就直接输出,大于10则转换为字母后输出 98 if (a[i] < 10) { 99 System.out.print(a[i]); 100 } else { 101 System.out.print(a[i] - 10 + 'a'); 102 } 103 } 104 } 105 }